ReactOS  0.4.13-dev-249-gcba1a2f
nsxfname.c
Go to the documentation of this file.
1 /******************************************************************************
2  *
3  * Module Name: nsxfname - Public interfaces to the ACPI subsystem
4  * ACPI Namespace oriented interfaces
5  *
6  *****************************************************************************/
7 
8 /*
9  * Copyright (C) 2000 - 2019, Intel Corp.
10  * All rights reserved.
11  *
12  * Redistribution and use in source and binary forms, with or without
13  * modification, are permitted provided that the following conditions
14  * are met:
15  * 1. Redistributions of source code must retain the above copyright
16  * notice, this list of conditions, and the following disclaimer,
17  * without modification.
18  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
19  * substantially similar to the "NO WARRANTY" disclaimer below
20  * ("Disclaimer") and any redistribution must be conditioned upon
21  * including a substantially similar Disclaimer requirement for further
22  * binary redistribution.
23  * 3. Neither the names of the above-listed copyright holders nor the names
24  * of any contributors may be used to endorse or promote products derived
25  * from this software without specific prior written permission.
26  *
27  * Alternatively, this software may be distributed under the terms of the
28  * GNU General Public License ("GPL") version 2 as published by the Free
29  * Software Foundation.
30  *
31  * NO WARRANTY
32  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
33  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
34  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
35  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
36  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
37  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
38  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
39  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
40  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
41  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
42  * POSSIBILITY OF SUCH DAMAGES.
43  */
44 
45 #define EXPORT_ACPI_INTERFACES
46 
47 #include "acpi.h"
48 #include "accommon.h"
49 #include "acnamesp.h"
50 #include "acparser.h"
51 #include "amlcode.h"
52 
53 
54 #define _COMPONENT ACPI_NAMESPACE
55  ACPI_MODULE_NAME ("nsxfname")
56 
57 /* Local prototypes */
58 
59 static char *
61  ACPI_PNP_DEVICE_ID *Dest,
63  char *StringArea);
64 
65 
66 /******************************************************************************
67  *
68  * FUNCTION: AcpiGetHandle
69  *
70  * PARAMETERS: Parent - Object to search under (search scope).
71  * Pathname - Pointer to an asciiz string containing the
72  * name
73  * RetHandle - Where the return handle is returned
74  *
75  * RETURN: Status
76  *
77  * DESCRIPTION: This routine will search for a caller specified name in the
78  * name space. The caller can restrict the search region by
79  * specifying a non NULL parent. The parent value is itself a
80  * namespace handle.
81  *
82  ******************************************************************************/
83 
88  ACPI_HANDLE *RetHandle)
89 {
92  ACPI_NAMESPACE_NODE *PrefixNode = NULL;
93 
94 
96 
97 
98  /* Parameter Validation */
99 
100  if (!RetHandle || !Pathname)
101  {
102  return (AE_BAD_PARAMETER);
103  }
104 
105  /* Convert a parent handle to a prefix node */
106 
107  if (Parent)
108  {
109  PrefixNode = AcpiNsValidateHandle (Parent);
110  if (!PrefixNode)
111  {
112  return (AE_BAD_PARAMETER);
113  }
114  }
115 
116  /*
117  * Valid cases are:
118  * 1) Fully qualified pathname
119  * 2) Parent + Relative pathname
120  *
121  * Error for <null Parent + relative path>
122  */
123  if (ACPI_IS_ROOT_PREFIX (Pathname[0]))
124  {
125  /* Pathname is fully qualified (starts with '\') */
126 
127  /* Special case for root-only, since we can't search for it */
128 
130  {
131  *RetHandle = ACPI_CAST_PTR (ACPI_HANDLE, AcpiGbl_RootNode);
132  return (AE_OK);
133  }
134  }
135  else if (!PrefixNode)
136  {
137  /* Relative path with null prefix is disallowed */
138 
139  return (AE_BAD_PARAMETER);
140  }
141 
142  /* Find the Node and convert to a handle */
143 
145  if (ACPI_SUCCESS (Status))
146  {
147  *RetHandle = ACPI_CAST_PTR (ACPI_HANDLE, Node);
148  }
149 
150  return (Status);
151 }
152 
154 
155 
156 /******************************************************************************
157  *
158  * FUNCTION: AcpiGetName
159  *
160  * PARAMETERS: Handle - Handle to be converted to a pathname
161  * NameType - Full pathname or single segment
162  * Buffer - Buffer for returned path
163  *
164  * RETURN: Pointer to a string containing the fully qualified Name.
165  *
166  * DESCRIPTION: This routine returns the fully qualified name associated with
167  * the Handle parameter. This and the AcpiPathnameToHandle are
168  * complementary functions.
169  *
170  ******************************************************************************/
171 
177 {
179 
180 
181  /* Parameter validation */
182 
184  {
185  return (AE_BAD_PARAMETER);
186  }
187 
189  if (ACPI_FAILURE (Status))
190  {
191  return (Status);
192  }
193 
194  /*
195  * Wants the single segment ACPI name.
196  * Validate handle and convert to a namespace Node
197  */
199  if (ACPI_FAILURE (Status))
200  {
201  return (Status);
202  }
203 
204  if (NameType == ACPI_FULL_PATHNAME ||
206  {
207  /* Get the full pathname (From the namespace root) */
208 
211  }
212  else
213  {
214  /* Get the single name */
215 
217  }
218 
220  return (Status);
221 }
222 
224 
225 
226 /******************************************************************************
227  *
228  * FUNCTION: AcpiNsCopyDeviceId
229  *
230  * PARAMETERS: Dest - Pointer to the destination PNP_DEVICE_ID
231  * Source - Pointer to the source PNP_DEVICE_ID
232  * StringArea - Pointer to where to copy the dest string
233  *
234  * RETURN: Pointer to the next string area
235  *
236  * DESCRIPTION: Copy a single PNP_DEVICE_ID, including the string data.
237  *
238  ******************************************************************************/
239 
240 static char *
242  ACPI_PNP_DEVICE_ID *Dest,
244  char *StringArea)
245 {
246  /* Create the destination PNP_DEVICE_ID */
247 
248  Dest->String = StringArea;
249  Dest->Length = Source->Length;
250 
251  /* Copy actual string and return a pointer to the next string area */
252 
253  memcpy (StringArea, Source->String, Source->Length);
254  return (StringArea + Source->Length);
255 }
256 
257 
258 /******************************************************************************
259  *
260  * FUNCTION: AcpiGetObjectInfo
261  *
262  * PARAMETERS: Handle - Object Handle
263  * ReturnBuffer - Where the info is returned
264  *
265  * RETURN: Status
266  *
267  * DESCRIPTION: Returns information about an object as gleaned from the
268  * namespace node and possibly by running several standard
269  * control methods (Such as in the case of a device.)
270  *
271  * For Device and Processor objects, run the Device _HID, _UID, _CID,
272  * _CLS, _ADR, _SxW, and _SxD methods.
273  *
274  * Note: Allocates the return buffer, must be freed by the caller.
275  *
276  * Note: This interface is intended to be used during the initial device
277  * discovery namespace traversal. Therefore, no complex methods can be
278  * executed, especially those that access operation regions. Therefore, do
279  * not add any additional methods that could cause problems in this area.
280  * Because of this reason support for the following methods has been removed:
281  * 1) _SUB method was removed (11/2015)
282  * 2) _STA method was removed (02/2018)
283  *
284  ******************************************************************************/
285 
289  ACPI_DEVICE_INFO **ReturnBuffer)
290 {
293  ACPI_PNP_DEVICE_ID_LIST *CidList = NULL;
294  ACPI_PNP_DEVICE_ID *Hid = NULL;
295  ACPI_PNP_DEVICE_ID *Uid = NULL;
296  ACPI_PNP_DEVICE_ID *Cls = NULL;
297  char *NextIdString;
299  ACPI_NAME Name;
300  UINT8 ParamCount= 0;
301  UINT16 Valid = 0;
302  UINT32 InfoSize;
303  UINT32 i;
305 
306 
307  /* Parameter validation */
308 
309  if (!Handle || !ReturnBuffer)
310  {
311  return (AE_BAD_PARAMETER);
312  }
313 
315  if (ACPI_FAILURE (Status))
316  {
317  return (Status);
318  }
319 
321  if (!Node)
322  {
324  return (AE_BAD_PARAMETER);
325  }
326 
327  /* Get the namespace node data while the namespace is locked */
328 
329  InfoSize = sizeof (ACPI_DEVICE_INFO);
330  Type = Node->Type;
331  Name = Node->Name.Integer;
332 
333  if (Node->Type == ACPI_TYPE_METHOD)
334  {
335  ParamCount = Node->Object->Method.ParamCount;
336  }
337 
339  if (ACPI_FAILURE (Status))
340  {
341  return (Status);
342  }
343 
344  if ((Type == ACPI_TYPE_DEVICE) ||
346  {
347  /*
348  * Get extra info for ACPI Device/Processor objects only:
349  * Run the Device _HID, _UID, _CLS, and _CID methods.
350  *
351  * Note: none of these methods are required, so they may or may
352  * not be present for this device. The Info->Valid bitfield is used
353  * to indicate which methods were found and run successfully.
354  */
355 
356  /* Execute the Device._HID method */
357 
358  Status = AcpiUtExecute_HID (Node, &Hid);
359  if (ACPI_SUCCESS (Status))
360  {
361  InfoSize += Hid->Length;
362  Valid |= ACPI_VALID_HID;
363  }
364 
365  /* Execute the Device._UID method */
366 
367  Status = AcpiUtExecute_UID (Node, &Uid);
368  if (ACPI_SUCCESS (Status))
369  {
370  InfoSize += Uid->Length;
371  Valid |= ACPI_VALID_UID;
372  }
373 
374  /* Execute the Device._CID method */
375 
376  Status = AcpiUtExecute_CID (Node, &CidList);
377  if (ACPI_SUCCESS (Status))
378  {
379  /* Add size of CID strings and CID pointer array */
380 
381  InfoSize += (CidList->ListSize - sizeof (ACPI_PNP_DEVICE_ID_LIST));
382  Valid |= ACPI_VALID_CID;
383  }
384 
385  /* Execute the Device._CLS method */
386 
387  Status = AcpiUtExecute_CLS (Node, &Cls);
388  if (ACPI_SUCCESS (Status))
389  {
390  InfoSize += Cls->Length;
391  Valid |= ACPI_VALID_CLS;
392  }
393  }
394 
395  /*
396  * Now that we have the variable-length data, we can allocate the
397  * return buffer
398  */
399  Info = ACPI_ALLOCATE_ZEROED (InfoSize);
400  if (!Info)
401  {
403  goto Cleanup;
404  }
405 
406  /* Get the fixed-length data */
407 
408  if ((Type == ACPI_TYPE_DEVICE) ||
410  {
411  /*
412  * Get extra info for ACPI Device/Processor objects only:
413  * Run the _ADR and, SxW, and _SxD methods.
414  *
415  * Notes: none of these methods are required, so they may or may
416  * not be present for this device. The Info->Valid bitfield is used
417  * to indicate which methods were found and run successfully.
418  */
419 
420  /* Execute the Device._ADR method */
421 
423  &Info->Address);
424  if (ACPI_SUCCESS (Status))
425  {
426  Valid |= ACPI_VALID_ADR;
427  }
428 
429  /* Execute the Device._SxW methods */
430 
433  Info->LowestDstates);
434  if (ACPI_SUCCESS (Status))
435  {
436  Valid |= ACPI_VALID_SXWS;
437  }
438 
439  /* Execute the Device._SxD methods */
440 
443  Info->HighestDstates);
444  if (ACPI_SUCCESS (Status))
445  {
446  Valid |= ACPI_VALID_SXDS;
447  }
448  }
449 
450  /*
451  * Create a pointer to the string area of the return buffer.
452  * Point to the end of the base ACPI_DEVICE_INFO structure.
453  */
454  NextIdString = ACPI_CAST_PTR (char, Info->CompatibleIdList.Ids);
455  if (CidList)
456  {
457  /* Point past the CID PNP_DEVICE_ID array */
458 
459  NextIdString += ((ACPI_SIZE) CidList->Count * sizeof (ACPI_PNP_DEVICE_ID));
460  }
461 
462  /*
463  * Copy the HID, UID, and CIDs to the return buffer. The variable-length
464  * strings are copied to the reserved area at the end of the buffer.
465  *
466  * For HID and CID, check if the ID is a PCI Root Bridge.
467  */
468  if (Hid)
469  {
470  NextIdString = AcpiNsCopyDeviceId (&Info->HardwareId,
471  Hid, NextIdString);
472 
473  if (AcpiUtIsPciRootBridge (Hid->String))
474  {
475  Info->Flags |= ACPI_PCI_ROOT_BRIDGE;
476  }
477  }
478 
479  if (Uid)
480  {
481  NextIdString = AcpiNsCopyDeviceId (&Info->UniqueId,
482  Uid, NextIdString);
483  }
484 
485  if (CidList)
486  {
487  Info->CompatibleIdList.Count = CidList->Count;
488  Info->CompatibleIdList.ListSize = CidList->ListSize;
489 
490  /* Copy each CID */
491 
492  for (i = 0; i < CidList->Count; i++)
493  {
494  NextIdString = AcpiNsCopyDeviceId (&Info->CompatibleIdList.Ids[i],
495  &CidList->Ids[i], NextIdString);
496 
497  if (AcpiUtIsPciRootBridge (CidList->Ids[i].String))
498  {
499  Info->Flags |= ACPI_PCI_ROOT_BRIDGE;
500  }
501  }
502  }
503 
504  if (Cls)
505  {
506  NextIdString = AcpiNsCopyDeviceId (&Info->ClassCode,
507  Cls, NextIdString);
508  }
509 
510  /* Copy the fixed-length data */
511 
512  Info->InfoSize = InfoSize;
513  Info->Type = Type;
514  Info->Name = Name;
515  Info->ParamCount = ParamCount;
516  Info->Valid = Valid;
517 
518  *ReturnBuffer = Info;
519  Status = AE_OK;
520 
521 
522 Cleanup:
523  if (Hid)
524  {
525  ACPI_FREE (Hid);
526  }
527  if (Uid)
528  {
529  ACPI_FREE (Uid);
530  }
531  if (CidList)
532  {
533  ACPI_FREE (CidList);
534  }
535  if (Cls)
536  {
537  ACPI_FREE (Cls);
538  }
539  return (Status);
540 }
541 
543 
544 
545 /******************************************************************************
546  *
547  * FUNCTION: AcpiInstallMethod
548  *
549  * PARAMETERS: Buffer - An ACPI table containing one control method
550  *
551  * RETURN: Status
552  *
553  * DESCRIPTION: Install a control method into the namespace. If the method
554  * name already exists in the namespace, it is overwritten. The
555  * input buffer must contain a valid DSDT or SSDT containing a
556  * single control method.
557  *
558  ******************************************************************************/
559 
562  UINT8 *Buffer)
563 {
565  UINT8 *AmlBuffer;
566  UINT8 *AmlStart;
567  char *Path;
569  ACPI_OPERAND_OBJECT *MethodObj;
570  ACPI_PARSE_STATE ParserState;
571  UINT32 AmlLength;
572  UINT16 Opcode;
573  UINT8 MethodFlags;
575 
576 
577  /* Parameter validation */
578 
579  if (!Buffer)
580  {
581  return (AE_BAD_PARAMETER);
582  }
583 
584  /* Table must be a DSDT or SSDT */
585 
586  if (!ACPI_COMPARE_NAMESEG (Table->Signature, ACPI_SIG_DSDT) &&
588  {
589  return (AE_BAD_HEADER);
590  }
591 
592  /* First AML opcode in the table must be a control method */
593 
594  ParserState.Aml = Buffer + sizeof (ACPI_TABLE_HEADER);
595  Opcode = AcpiPsPeekOpcode (&ParserState);
596  if (Opcode != AML_METHOD_OP)
597  {
598  return (AE_BAD_PARAMETER);
599  }
600 
601  /* Extract method information from the raw AML */
602 
603  ParserState.Aml += AcpiPsGetOpcodeSize (Opcode);
604  ParserState.PkgEnd = AcpiPsGetNextPackageEnd (&ParserState);
605  Path = AcpiPsGetNextNamestring (&ParserState);
606 
607  MethodFlags = *ParserState.Aml++;
608  AmlStart = ParserState.Aml;
609  AmlLength = ACPI_PTR_DIFF (ParserState.PkgEnd, AmlStart);
610 
611  /*
612  * Allocate resources up-front. We don't want to have to delete a new
613  * node from the namespace if we cannot allocate memory.
614  */
615  AmlBuffer = ACPI_ALLOCATE (AmlLength);
616  if (!AmlBuffer)
617  {
618  return (AE_NO_MEMORY);
619  }
620 
622  if (!MethodObj)
623  {
624  ACPI_FREE (AmlBuffer);
625  return (AE_NO_MEMORY);
626  }
627 
628  /* Lock namespace for AcpiNsLookup, we may be creating a new node */
629 
631  if (ACPI_FAILURE (Status))
632  {
633  goto ErrorExit;
634  }
635 
636  /* The lookup either returns an existing node or creates a new one */
637 
640 
642 
643  if (ACPI_FAILURE (Status)) /* NsLookup */
644  {
645  if (Status != AE_ALREADY_EXISTS)
646  {
647  goto ErrorExit;
648  }
649 
650  /* Node existed previously, make sure it is a method node */
651 
652  if (Node->Type != ACPI_TYPE_METHOD)
653  {
654  Status = AE_TYPE;
655  goto ErrorExit;
656  }
657  }
658 
659  /* Copy the method AML to the local buffer */
660 
661  memcpy (AmlBuffer, AmlStart, AmlLength);
662 
663  /* Initialize the method object with the new method's information */
664 
665  MethodObj->Method.AmlStart = AmlBuffer;
666  MethodObj->Method.AmlLength = AmlLength;
667 
668  MethodObj->Method.ParamCount = (UINT8)
669  (MethodFlags & AML_METHOD_ARG_COUNT);
670 
671  if (MethodFlags & AML_METHOD_SERIALIZED)
672  {
674 
675  MethodObj->Method.SyncLevel = (UINT8)
676  ((MethodFlags & AML_METHOD_SYNC_LEVEL) >> 4);
677  }
678 
679  /*
680  * Now that it is complete, we can attach the new method object to
681  * the method Node (detaches/deletes any existing object)
682  */
684 
685  /*
686  * Flag indicates AML buffer is dynamic, must be deleted later.
687  * Must be set only after attach above.
688  */
689  Node->Flags |= ANOBJ_ALLOCATED_BUFFER;
690 
691  /* Remove local reference to the method object */
692 
693  AcpiUtRemoveReference (MethodObj);
694  return (Status);
695 
696 
697 ErrorExit:
698 
699  ACPI_FREE (AmlBuffer);
700  ACPI_FREE (MethodObj);
701  return (Status);
702 }
703 
#define ACPI_VALID_HID
Definition: actypes.h:1305
#define ACPI_FREE(a)
Definition: actypes.h:386
#define ACPI_VALID_SXWS
Definition: actypes.h:1310
UINT8 * AmlStart
Definition: acobject.h:220
ASMGENDATA Table[]
Definition: genincdata.c:61
#define ACPI_ALLOCATE_ZEROED(a)
Definition: actypes.h:385
#define TRUE
Definition: types.h:120
UINT8 * PkgEnd
Definition: aclocal.h:1105
_In_ PVOID _In_ ULONG Opcode
Definition: hubbusif.h:330
#define ACPI_SUCCESS(a)
Definition: acexcep.h:94
ACPI_STATUS AcpiNsLookup(ACPI_GENERIC_STATE *ScopeInfo, char *Name, ACPI_OBJECT_TYPE Type, ACPI_INTERPRETER_MODE InterpreterMode, UINT32 Flags, ACPI_WALK_STATE *WalkState, ACPI_NAMESPACE_NODE **RetNode)
Definition: nsaccess.c:294
struct png_info_def **typedef void(__cdecl typeof(png_destroy_read_struct))(struct png_struct_def **
Definition: typeof.h:49
Type
Definition: Type.h:6
#define METHOD_NAME__ADR
Definition: acnames.h:49
#define AE_NO_MEMORY
Definition: acexcep.h:112
ActualNumberDriverObjects * sizeof(PDRIVER_OBJECT)) PDRIVER_OBJECT *DriverObjectList
#define ACPI_METHOD_SERIALIZED
Definition: acobject.h:237
#define AE_BAD_PARAMETER
Definition: acexcep.h:151
struct acpi_pnp_device_id_list ACPI_PNP_DEVICE_ID_LIST
ACPI_OBJECT_COMMON_HEADER UINT8 InfoFlags
Definition: acobject.h:215
#define ACPI_FULL_PATHNAME_NO_TRAILING
Definition: actypes.h:1053
ACPI_PNP_DEVICE_ID Ids[1]
Definition: actypes.h:1272
#define ACPI_VALID_SXDS
Definition: actypes.h:1309
ACPI_STATUS AcpiUtEvaluateNumericObject(const char *ObjectName, ACPI_NAMESPACE_NODE *DeviceNode, UINT64 *Value)
Definition: uteval.c:221
#define ACPI_PTR_DIFF(a, b)
Definition: actypes.h:548
#define ACPI_NS_ERROR_IF_FOUND
Definition: acnamesp.h:66
ACPI_PHYSICAL_ADDRESS ACPI_SIZE BOOLEAN Warn BOOLEAN Physical UINT32 ACPI_TABLE_HEADER *OutTableHeader ACPI_TABLE_HEADER **OutTable ACPI_HANDLE UINT32 ACPI_WALK_CALLBACK ACPI_WALK_CALLBACK void void **ReturnValue UINT32 ACPI_BUFFER *RetPathPtr ACPI_OBJECT_HANDLER void *Data ACPI_OBJECT_HANDLER void **Data ACPI_STRING ACPI_OBJECT_LIST ACPI_BUFFER *ReturnObjectBuffer ACPI_DEVICE_INFO **ReturnBuffer ACPI_HANDLE Parent
Definition: acpixf.h:716
BOOLEAN AcpiUtIsPciRootBridge(char *Id)
Definition: utmisc.c:66
UINT32 ACPI_STATUS
Definition: actypes.h:460
struct TraceInfo Info
struct acpi_table_header ACPI_TABLE_HEADER
#define ACPI_FAILURE(a)
Definition: acexcep.h:95
char * AcpiPsGetNextNamestring(ACPI_PARSE_STATE *ParserState)
Definition: psargs.c:172
#define ACPI_ALLOCATE(a)
Definition: actypes.h:384
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
ACPI_STATUS AcpiUtReleaseMutex(ACPI_MUTEX_HANDLE MutexId)
Definition: utmutex.c:348
ACPI_STATUS AcpiNsGetNode(ACPI_NAMESPACE_NODE *PrefixNode, const char *ExternalPathname, UINT32 Flags, ACPI_NAMESPACE_NODE **OutNode)
Definition: nsutils.c:876
#define AML_METHOD_SERIALIZED
Definition: amlcode.h:506
ACPI_STATUS AcpiUtExecute_CLS(ACPI_NAMESPACE_NODE *DeviceNode, ACPI_PNP_DEVICE_ID **ReturnId)
Definition: utids.c:406
ACPI_STATUS AcpiUtAcquireMutex(ACPI_MUTEX_HANDLE MutexId)
Definition: utmutex.c:256
unsigned int UINT32
char * ACPI_STRING
Definition: actypes.h:462
union node Node
Definition: types.h:1255
#define ACPI_NS_DONT_OPEN_SCOPE
Definition: acnamesp.h:64
#define ACPI_MODULE_NAME(Name)
Definition: acoutput.h:216
struct NameRec_ * Name
Definition: cdprocs.h:464
#define ACPI_EXPORT_SYMBOL(Symbol)
Definition: actypes.h:343
#define ACPI_NUM_SxW_METHODS
Definition: acconfig.h:232
smooth NULL
Definition: ftsmooth.c:416
#define AML_METHOD_ARG_COUNT
Definition: amlcode.h:505
#define ACPI_VALID_CID
Definition: actypes.h:1307
#define ACPI_NUM_SxD_METHODS
Definition: acconfig.h:231
UINT32 ACPI_OBJECT_TYPE
Definition: actypes.h:676
Definition: bufpool.h:45
#define ACPI_FUNCTION_ENTRY()
Definition: acoutput.h:484
ACPI_STATUS AcpiUtExecutePowerMethods(ACPI_NAMESPACE_NODE *DeviceNode, const char **MethodNames, UINT8 MethodCount, UINT8 *OutValues)
Definition: uteval.c:332
ACPI_STATUS AcpiNsHandleToPathname(ACPI_HANDLE TargetHandle, ACPI_BUFFER *Buffer, BOOLEAN NoTrailing)
Definition: nsnames.c:193
static char * AcpiNsCopyDeviceId(ACPI_PNP_DEVICE_ID *Dest, ACPI_PNP_DEVICE_ID *Source, char *StringArea)
Definition: nsxfname.c:241
UINT16 AcpiPsPeekOpcode(ACPI_PARSE_STATE *state)
Definition: psparse.c:108
#define ACPI_SIG_DSDT
Definition: actbl.h:67
#define AML_METHOD_SYNC_LEVEL
Definition: amlcode.h:507
_In_ HANDLE Handle
Definition: extypes.h:390
ACPI_STATUS AcpiGetName(ACPI_HANDLE Handle, UINT32 NameType, ACPI_BUFFER *Buffer)
Definition: nsxfname.c:173
#define ACPI_TYPE_METHOD
Definition: actypes.h:686
#define ACPI_NAME_TYPE_MAX
Definition: actypes.h:1054
#define AE_ALREADY_EXISTS
Definition: acexcep.h:115
UINT8 * AcpiPsGetNextPackageEnd(ACPI_PARSE_STATE *ParserState)
Definition: psargs.c:138
ACPI_STATUS AcpiGetHandle(ACPI_HANDLE Parent, ACPI_STRING Pathname, ACPI_HANDLE *RetHandle)
Definition: nsxfname.c:85
#define ACPI_VALID_CLS
Definition: actypes.h:1308
#define ACPI_COMPARE_NAMESEG(a, b)
Definition: actypes.h:561
ACPI_STATUS AcpiUtExecute_HID(ACPI_NAMESPACE_NODE *DeviceNode, ACPI_PNP_DEVICE_ID **ReturnId)
Definition: utids.c:72
UINT32 ACPI_NAME
Definition: actypes.h:461
#define ACPI_SIG_SSDT
Definition: actbl.h:75
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
#define AML_METHOD_OP
Definition: amlcode.h:64
#define ACPI_TYPE_DEVICE
Definition: actypes.h:684
#define ACPI_VALID_ADR
Definition: actypes.h:1304
#define ACPI_FULL_PATHNAME
Definition: actypes.h:1051
#define AE_TYPE
Definition: acexcep.h:116
static const WCHAR Cleanup[]
Definition: register.c:80
#define ACPI_TYPE_PROCESSOR
Definition: actypes.h:690
ACPI_STATUS AcpiNsHandleToName(ACPI_HANDLE TargetHandle, ACPI_BUFFER *Buffer)
Definition: nsnames.c:139
Status
Definition: gdiplustypes.h:24
ACPI_OBJECT_METHOD Method
Definition: acobject.h:522
#define AE_BAD_HEADER
Definition: acexcep.h:168
ACPI_STATUS AcpiGetObjectInfo(ACPI_HANDLE Handle, ACPI_DEVICE_INFO **ReturnBuffer)
Definition: nsxfname.c:287
#define ACPI_PCI_ROOT_BRIDGE
Definition: actypes.h:1300
ACPI_STATUS AcpiNsAttachObject(ACPI_NAMESPACE_NODE *Node, ACPI_OPERAND_OBJECT *Object, ACPI_OBJECT_TYPE Type)
Definition: nsobject.c:76
struct acpi_device_info ACPI_DEVICE_INFO
PRTL_UNICODE_STRING_BUFFER Path
const char * AcpiGbl_HighestDstateNames[ACPI_NUM_SxD_METHODS]
Definition: utglobal.c:81
#define ACPI_NS_NO_UPSEARCH
Definition: acnamesp.h:62
static VOID ErrorExit(LPTSTR lpszMessage)
Definition: telnetd.c:647
void AcpiUtRemoveReference(ACPI_OPERAND_OBJECT *Object)
Definition: utdelete.c:784
unsigned short UINT16
int strcmp(const char *String1, const char *String2)
Definition: utclib.c:469
ACPI_STATUS AcpiUtValidateBuffer(ACPI_BUFFER *Buffer)
Definition: utalloc.c:290
#define ACPI_VALID_UID
Definition: actypes.h:1306
#define ACPI_IS_ROOT_PREFIX(c)
Definition: acmacros.h:401
ACPI_STATUS AcpiUtExecute_CID(ACPI_NAMESPACE_NODE *DeviceNode, ACPI_PNP_DEVICE_ID_LIST **ReturnCidList)
Definition: utids.c:253
_In_ UINT _In_ UINT _In_ PNDIS_PACKET Source
Definition: ndis.h:3167
ACPI_NAMESPACE_NODE * AcpiNsValidateHandle(ACPI_HANDLE Handle)
Definition: nsutils.c:655
ACPI_PHYSICAL_ADDRESS ACPI_SIZE BOOLEAN Warn BOOLEAN Physical UINT32 ACPI_TABLE_HEADER *OutTableHeader ACPI_TABLE_HEADER **OutTable ACPI_HANDLE UINT32 ACPI_WALK_CALLBACK ACPI_WALK_CALLBACK void void **ReturnValue UINT32 NameType
Definition: acpixf.h:642
ACPI_STATUS AcpiUtExecute_UID(ACPI_NAMESPACE_NODE *DeviceNode, ACPI_PNP_DEVICE_ID **ReturnId)
Definition: utids.c:160
#define AcpiUtCreateInternalObject(t)
Definition: acutils.h:654
#define ACPI_MTX_NAMESPACE
Definition: aclocal.h:85
ACPI_STATUS AcpiInstallMethod(UINT8 *Buffer)
Definition: nsxfname.c:561
#define ANOBJ_ALLOCATED_BUFFER
Definition: aclocal.h:221
#define ACPI_CAST_PTR(t, p)
Definition: actypes.h:544
unsigned char UINT8
#define ACPI_NS_ROOT_PATH
Definition: acnames.h:94
#define AE_OK
Definition: acexcep.h:97
UINT32 AcpiPsGetOpcodeSize(UINT32 Opcode)
Definition: psparse.c:78
const char * AcpiGbl_LowestDstateNames[ACPI_NUM_SxW_METHODS]
Definition: utglobal.c:72
Definition: dlist.c:348
ACPI_PHYSICAL_ADDRESS ACPI_SIZE BOOLEAN Warn BOOLEAN Physical UINT32 ACPI_TABLE_HEADER *OutTableHeader ACPI_TABLE_HEADER **OutTable ACPI_HANDLE UINT32 ACPI_WALK_CALLBACK ACPI_WALK_CALLBACK void void **ReturnValue UINT32 ACPI_BUFFER *RetPathPtr ACPI_OBJECT_HANDLER void *Data ACPI_OBJECT_HANDLER void **Data ACPI_STRING Pathname
Definition: acpixf.h:688