ReactOS  0.4.15-dev-1070-ge1a01de
dsmthdat.c
Go to the documentation of this file.
1 /*******************************************************************************
2  *
3  * Module Name: dsmthdat - control method arguments and local variables
4  *
5  ******************************************************************************/
6 
7 /*
8  * Copyright (C) 2000 - 2020, Intel Corp.
9  * All rights reserved.
10  *
11  * Redistribution and use in source and binary forms, with or without
12  * modification, are permitted provided that the following conditions
13  * are met:
14  * 1. Redistributions of source code must retain the above copyright
15  * notice, this list of conditions, and the following disclaimer,
16  * without modification.
17  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18  * substantially similar to the "NO WARRANTY" disclaimer below
19  * ("Disclaimer") and any redistribution must be conditioned upon
20  * including a substantially similar Disclaimer requirement for further
21  * binary redistribution.
22  * 3. Neither the names of the above-listed copyright holders nor the names
23  * of any contributors may be used to endorse or promote products derived
24  * from this software without specific prior written permission.
25  *
26  * Alternatively, this software may be distributed under the terms of the
27  * GNU General Public License ("GPL") version 2 as published by the Free
28  * Software Foundation.
29  *
30  * NO WARRANTY
31  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41  * POSSIBILITY OF SUCH DAMAGES.
42  */
43 
44 #include "acpi.h"
45 #include "accommon.h"
46 #include "acdispat.h"
47 #include "acnamesp.h"
48 #include "acinterp.h"
49 
50 
51 #define _COMPONENT ACPI_DISPATCHER
52  ACPI_MODULE_NAME ("dsmthdat")
53 
54 /* Local prototypes */
55 
56 static void
58  UINT8 Type,
59  UINT32 Index,
60  ACPI_WALK_STATE *WalkState);
61 
62 static ACPI_STATUS
64  UINT8 Type,
65  UINT32 Index,
67  ACPI_WALK_STATE *WalkState);
68 
69 #ifdef ACPI_OBSOLETE_FUNCTIONS
71 AcpiDsMethodDataGetType (
72  UINT16 Opcode,
73  UINT32 Index,
74  ACPI_WALK_STATE *WalkState);
75 #endif
76 
77 
78 /*******************************************************************************
79  *
80  * FUNCTION: AcpiDsMethodDataInit
81  *
82  * PARAMETERS: WalkState - Current walk state object
83  *
84  * RETURN: Status
85  *
86  * DESCRIPTION: Initialize the data structures that hold the method's arguments
87  * and locals. The data struct is an array of namespace nodes for
88  * each - this allows RefOf and DeRefOf to work properly for these
89  * special data types.
90  *
91  * NOTES: WalkState fields are initialized to zero by the
92  * ACPI_ALLOCATE_ZEROED().
93  *
94  * A pseudo-Namespace Node is assigned to each argument and local
95  * so that RefOf() can return a pointer to the Node.
96  *
97  ******************************************************************************/
98 
99 void
101  ACPI_WALK_STATE *WalkState)
102 {
103  UINT32 i;
104 
105 
106  ACPI_FUNCTION_TRACE (DsMethodDataInit);
107 
108 
109  /* Init the method arguments */
110 
111  for (i = 0; i < ACPI_METHOD_NUM_ARGS; i++)
112  {
113  ACPI_MOVE_32_TO_32 (&WalkState->Arguments[i].Name,
115 
116  WalkState->Arguments[i].Name.Integer |= (i << 24);
117  WalkState->Arguments[i].DescriptorType = ACPI_DESC_TYPE_NAMED;
118  WalkState->Arguments[i].Type = ACPI_TYPE_ANY;
119  WalkState->Arguments[i].Flags = ANOBJ_METHOD_ARG;
120  }
121 
122  /* Init the method locals */
123 
124  for (i = 0; i < ACPI_METHOD_NUM_LOCALS; i++)
125  {
126  ACPI_MOVE_32_TO_32 (&WalkState->LocalVariables[i].Name,
128 
129  WalkState->LocalVariables[i].Name.Integer |= (i << 24);
130  WalkState->LocalVariables[i].DescriptorType = ACPI_DESC_TYPE_NAMED;
131  WalkState->LocalVariables[i].Type = ACPI_TYPE_ANY;
132  WalkState->LocalVariables[i].Flags = ANOBJ_METHOD_LOCAL;
133  }
134 
135  return_VOID;
136 }
137 
138 
139 /*******************************************************************************
140  *
141  * FUNCTION: AcpiDsMethodDataDeleteAll
142  *
143  * PARAMETERS: WalkState - Current walk state object
144  *
145  * RETURN: None
146  *
147  * DESCRIPTION: Delete method locals and arguments. Arguments are only
148  * deleted if this method was called from another method.
149  *
150  ******************************************************************************/
151 
152 void
154  ACPI_WALK_STATE *WalkState)
155 {
156  UINT32 Index;
157 
158 
159  ACPI_FUNCTION_TRACE (DsMethodDataDeleteAll);
160 
161 
162  /* Detach the locals */
163 
164  for (Index = 0; Index < ACPI_METHOD_NUM_LOCALS; Index++)
165  {
166  if (WalkState->LocalVariables[Index].Object)
167  {
168  ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Deleting Local%u=%p\n",
169  Index, WalkState->LocalVariables[Index].Object));
170 
171  /* Detach object (if present) and remove a reference */
172 
173  AcpiNsDetachObject (&WalkState->LocalVariables[Index]);
174  }
175  }
176 
177  /* Detach the arguments */
178 
179  for (Index = 0; Index < ACPI_METHOD_NUM_ARGS; Index++)
180  {
181  if (WalkState->Arguments[Index].Object)
182  {
183  ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Deleting Arg%u=%p\n",
184  Index, WalkState->Arguments[Index].Object));
185 
186  /* Detach object (if present) and remove a reference */
187 
188  AcpiNsDetachObject (&WalkState->Arguments[Index]);
189  }
190  }
191 
192  return_VOID;
193 }
194 
195 
196 /*******************************************************************************
197  *
198  * FUNCTION: AcpiDsMethodDataInitArgs
199  *
200  * PARAMETERS: *Params - Pointer to a parameter list for the method
201  * MaxParamCount - The arg count for this method
202  * WalkState - Current walk state object
203  *
204  * RETURN: Status
205  *
206  * DESCRIPTION: Initialize arguments for a method. The parameter list is a list
207  * of ACPI operand objects, either null terminated or whose length
208  * is defined by MaxParamCount.
209  *
210  ******************************************************************************/
211 
214  ACPI_OPERAND_OBJECT **Params,
215  UINT32 MaxParamCount,
216  ACPI_WALK_STATE *WalkState)
217 {
219  UINT32 Index = 0;
220 
221 
222  ACPI_FUNCTION_TRACE_PTR (DsMethodDataInitArgs, Params);
223 
224 
225  if (!Params)
226  {
228  "No parameter list passed to method\n"));
230  }
231 
232  /* Copy passed parameters into the new method stack frame */
233 
234  while ((Index < ACPI_METHOD_NUM_ARGS) &&
235  (Index < MaxParamCount) &&
236  Params[Index])
237  {
238  /*
239  * A valid parameter.
240  * Store the argument in the method/walk descriptor.
241  * Do not copy the arg in order to implement call by reference
242  */
244  ACPI_REFCLASS_ARG, Index, Params[Index], WalkState);
245  if (ACPI_FAILURE (Status))
246  {
248  }
249 
250  Index++;
251  }
252 
253  ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%u args passed to method\n", Index));
255 }
256 
257 
258 /*******************************************************************************
259  *
260  * FUNCTION: AcpiDsMethodDataGetNode
261  *
262  * PARAMETERS: Type - Either ACPI_REFCLASS_LOCAL or
263  * ACPI_REFCLASS_ARG
264  * Index - Which Local or Arg whose type to get
265  * WalkState - Current walk state object
266  * Node - Where the node is returned.
267  *
268  * RETURN: Status and node
269  *
270  * DESCRIPTION: Get the Node associated with a local or arg.
271  *
272  ******************************************************************************/
273 
276  UINT8 Type,
277  UINT32 Index,
278  ACPI_WALK_STATE *WalkState,
280 {
281  ACPI_FUNCTION_TRACE (DsMethodDataGetNode);
282 
283 
284  /*
285  * Method Locals and Arguments are supported
286  */
287  switch (Type)
288  {
289  case ACPI_REFCLASS_LOCAL:
290 
292  {
294  "Local index %u is invalid (max %u)",
297  }
298 
299  /* Return a pointer to the pseudo-node */
300 
301  *Node = &WalkState->LocalVariables[Index];
302  break;
303 
304  case ACPI_REFCLASS_ARG:
305 
307  {
309  "Arg index %u is invalid (max %u)",
312  }
313 
314  /* Return a pointer to the pseudo-node */
315 
316  *Node = &WalkState->Arguments[Index];
317  break;
318 
319  default:
320 
321  ACPI_ERROR ((AE_INFO, "Type %u is invalid", Type));
323  }
324 
326 }
327 
328 
329 /*******************************************************************************
330  *
331  * FUNCTION: AcpiDsMethodDataSetValue
332  *
333  * PARAMETERS: Type - Either ACPI_REFCLASS_LOCAL or
334  * ACPI_REFCLASS_ARG
335  * Index - Which Local or Arg to get
336  * Object - Object to be inserted into the stack entry
337  * WalkState - Current walk state object
338  *
339  * RETURN: Status
340  *
341  * DESCRIPTION: Insert an object onto the method stack at entry Opcode:Index.
342  * Note: There is no "implicit conversion" for locals.
343  *
344  ******************************************************************************/
345 
346 static ACPI_STATUS
348  UINT8 Type,
349  UINT32 Index,
351  ACPI_WALK_STATE *WalkState)
352 {
355 
356 
357  ACPI_FUNCTION_TRACE (DsMethodDataSetValue);
358 
359 
361  "NewObj %p Type %2.2X, Refs=%u [%s]\n", Object,
362  Type, Object->Common.ReferenceCount,
363  AcpiUtGetTypeName (Object->Common.Type)));
364 
365  /* Get the namespace node for the arg/local */
366 
367  Status = AcpiDsMethodDataGetNode (Type, Index, WalkState, &Node);
368  if (ACPI_FAILURE (Status))
369  {
371  }
372 
373  /*
374  * Increment ref count so object can't be deleted while installed.
375  * NOTE: We do not copy the object in order to preserve the call by
376  * reference semantics of ACPI Control Method invocation.
377  * (See ACPI Specification 2.0C)
378  */
380 
381  /* Install the object */
382 
383  Node->Object = Object;
385 }
386 
387 
388 /*******************************************************************************
389  *
390  * FUNCTION: AcpiDsMethodDataGetValue
391  *
392  * PARAMETERS: Type - Either ACPI_REFCLASS_LOCAL or
393  * ACPI_REFCLASS_ARG
394  * Index - Which localVar or argument to get
395  * WalkState - Current walk state object
396  * DestDesc - Where Arg or Local value is returned
397  *
398  * RETURN: Status
399  *
400  * DESCRIPTION: Retrieve value of selected Arg or Local for this method
401  * Used only in AcpiExResolveToValue().
402  *
403  ******************************************************************************/
404 
407  UINT8 Type,
408  UINT32 Index,
409  ACPI_WALK_STATE *WalkState,
410  ACPI_OPERAND_OBJECT **DestDesc)
411 {
415 
416 
417  ACPI_FUNCTION_TRACE (DsMethodDataGetValue);
418 
419 
420  /* Validate the object descriptor */
421 
422  if (!DestDesc)
423  {
424  ACPI_ERROR ((AE_INFO, "Null object descriptor pointer"));
426  }
427 
428  /* Get the namespace node for the arg/local */
429 
430  Status = AcpiDsMethodDataGetNode (Type, Index, WalkState, &Node);
431  if (ACPI_FAILURE (Status))
432  {
434  }
435 
436  /* Get the object from the node */
437 
438  Object = Node->Object;
439 
440  /* Examine the returned object, it must be valid. */
441 
442  if (!Object)
443  {
444  /*
445  * Index points to uninitialized object.
446  * This means that either 1) The expected argument was
447  * not passed to the method, or 2) A local variable
448  * was referenced by the method (via the ASL)
449  * before it was initialized. Either case is an error.
450  */
451 
452  /* If slack enabled, init the LocalX/ArgX to an Integer of value zero */
453 
454  if (AcpiGbl_EnableInterpreterSlack)
455  {
457  if (!Object)
458  {
460  }
461 
462  Node->Object = Object;
463  }
464 
465  /* Otherwise, return the error */
466 
467  else switch (Type)
468  {
469  case ACPI_REFCLASS_ARG:
470 
472  "Uninitialized Arg[%u] at node %p",
473  Index, Node));
474 
476 
477  case ACPI_REFCLASS_LOCAL:
478  /*
479  * No error message for this case, will be trapped again later to
480  * detect and ignore cases of Store(LocalX,LocalX)
481  */
483 
484  default:
485 
486  ACPI_ERROR ((AE_INFO, "Not a Arg/Local opcode: 0x%X", Type));
488  }
489  }
490 
491  /*
492  * The Index points to an initialized and valid object.
493  * Return an additional reference to the object
494  */
495  *DestDesc = Object;
497 
499 }
500 
501 
502 /*******************************************************************************
503  *
504  * FUNCTION: AcpiDsMethodDataDeleteValue
505  *
506  * PARAMETERS: Type - Either ACPI_REFCLASS_LOCAL or
507  * ACPI_REFCLASS_ARG
508  * Index - Which localVar or argument to delete
509  * WalkState - Current walk state object
510  *
511  * RETURN: None
512  *
513  * DESCRIPTION: Delete the entry at Opcode:Index. Inserts
514  * a null into the stack slot after the object is deleted.
515  *
516  ******************************************************************************/
517 
518 static void
520  UINT8 Type,
521  UINT32 Index,
522  ACPI_WALK_STATE *WalkState)
523 {
527 
528 
529  ACPI_FUNCTION_TRACE (DsMethodDataDeleteValue);
530 
531 
532  /* Get the namespace node for the arg/local */
533 
534  Status = AcpiDsMethodDataGetNode (Type, Index, WalkState, &Node);
535  if (ACPI_FAILURE (Status))
536  {
537  return_VOID;
538  }
539 
540  /* Get the associated object */
541 
543 
544  /*
545  * Undefine the Arg or Local by setting its descriptor
546  * pointer to NULL. Locals/Args can contain both
547  * ACPI_OPERAND_OBJECTS and ACPI_NAMESPACE_NODEs
548  */
549  Node->Object = NULL;
550 
551  if ((Object) &&
553  {
554  /*
555  * There is a valid object.
556  * Decrement the reference count by one to balance the
557  * increment when the object was stored.
558  */
560  }
561 
562  return_VOID;
563 }
564 
565 
566 /*******************************************************************************
567  *
568  * FUNCTION: AcpiDsStoreObjectToLocal
569  *
570  * PARAMETERS: Type - Either ACPI_REFCLASS_LOCAL or
571  * ACPI_REFCLASS_ARG
572  * Index - Which Local or Arg to set
573  * ObjDesc - Value to be stored
574  * WalkState - Current walk state
575  *
576  * RETURN: Status
577  *
578  * DESCRIPTION: Store a value in an Arg or Local. The ObjDesc is installed
579  * as the new value for the Arg or Local and the reference count
580  * for ObjDesc is incremented.
581  *
582  ******************************************************************************/
583 
586  UINT8 Type,
587  UINT32 Index,
588  ACPI_OPERAND_OBJECT *ObjDesc,
589  ACPI_WALK_STATE *WalkState)
590 {
593  ACPI_OPERAND_OBJECT *CurrentObjDesc;
594  ACPI_OPERAND_OBJECT *NewObjDesc;
595 
596 
597  ACPI_FUNCTION_TRACE (DsStoreObjectToLocal);
598  ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Type=%2.2X Index=%u Obj=%p\n",
599  Type, Index, ObjDesc));
600 
601  /* Parameter validation */
602 
603  if (!ObjDesc)
604  {
606  }
607 
608  /* Get the namespace node for the arg/local */
609 
610  Status = AcpiDsMethodDataGetNode (Type, Index, WalkState, &Node);
611  if (ACPI_FAILURE (Status))
612  {
614  }
615 
616  CurrentObjDesc = AcpiNsGetAttachedObject (Node);
617  if (CurrentObjDesc == ObjDesc)
618  {
619  ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Obj=%p already installed!\n",
620  ObjDesc));
622  }
623 
624  /*
625  * If the reference count on the object is more than one, we must
626  * take a copy of the object before we store. A reference count
627  * of exactly 1 means that the object was just created during the
628  * evaluation of an expression, and we can safely use it since it
629  * is not used anywhere else.
630  */
631  NewObjDesc = ObjDesc;
632  if (ObjDesc->Common.ReferenceCount > 1)
633  {
635  ObjDesc, &NewObjDesc, WalkState);
636  if (ACPI_FAILURE (Status))
637  {
639  }
640  }
641 
642  /*
643  * If there is an object already in this slot, we either
644  * have to delete it, or if this is an argument and there
645  * is an object reference stored there, we have to do
646  * an indirect store!
647  */
648  if (CurrentObjDesc)
649  {
650  /*
651  * Check for an indirect store if an argument
652  * contains an object reference (stored as an Node).
653  * We don't allow this automatic dereferencing for
654  * locals, since a store to a local should overwrite
655  * anything there, including an object reference.
656  *
657  * If both Arg0 and Local0 contain RefOf (Local4):
658  *
659  * Store (1, Arg0) - Causes indirect store to local4
660  * Store (1, Local0) - Stores 1 in local0, overwriting
661  * the reference to local4
662  * Store (1, DeRefof (Local0)) - Causes indirect store to local4
663  *
664  * Weird, but true.
665  */
666  if (Type == ACPI_REFCLASS_ARG)
667  {
668  /*
669  * If we have a valid reference object that came from RefOf(),
670  * do the indirect store
671  */
672  if ((ACPI_GET_DESCRIPTOR_TYPE (CurrentObjDesc) ==
674  (CurrentObjDesc->Common.Type ==
676  (CurrentObjDesc->Reference.Class ==
678  {
680  "Arg (%p) is an ObjRef(Node), storing in node %p\n",
681  NewObjDesc, CurrentObjDesc));
682 
683  /*
684  * Store this object to the Node (perform the indirect store)
685  * NOTE: No implicit conversion is performed, as per the ACPI
686  * specification rules on storing to Locals/Args.
687  */
688  Status = AcpiExStoreObjectToNode (NewObjDesc,
689  CurrentObjDesc->Reference.Object, WalkState,
691 
692  /* Remove local reference if we copied the object above */
693 
694  if (NewObjDesc != ObjDesc)
695  {
696  AcpiUtRemoveReference (NewObjDesc);
697  }
698 
700  }
701  }
702 
703  /* Delete the existing object before storing the new one */
704 
705  AcpiDsMethodDataDeleteValue (Type, Index, WalkState);
706  }
707 
708  /*
709  * Install the Obj descriptor (*NewObjDesc) into
710  * the descriptor for the Arg or Local.
711  * (increments the object reference count by one)
712  */
713  Status = AcpiDsMethodDataSetValue (Type, Index, NewObjDesc, WalkState);
714 
715  /* Remove local reference if we copied the object above */
716 
717  if (NewObjDesc != ObjDesc)
718  {
719  AcpiUtRemoveReference (NewObjDesc);
720  }
721 
723 }
724 
725 
726 #ifdef ACPI_OBSOLETE_FUNCTIONS
727 /*******************************************************************************
728  *
729  * FUNCTION: AcpiDsMethodDataGetType
730  *
731  * PARAMETERS: Opcode - Either AML_FIRST LOCAL_OP or
732  * AML_FIRST_ARG_OP
733  * Index - Which Local or Arg whose type to get
734  * WalkState - Current walk state object
735  *
736  * RETURN: Data type of current value of the selected Arg or Local
737  *
738  * DESCRIPTION: Get the type of the object stored in the Local or Arg
739  *
740  ******************************************************************************/
741 
743 AcpiDsMethodDataGetType (
744  UINT16 Opcode,
745  UINT32 Index,
746  ACPI_WALK_STATE *WalkState)
747 {
751 
752 
753  ACPI_FUNCTION_TRACE (DsMethodDataGetType);
754 
755 
756  /* Get the namespace node for the arg/local */
757 
758  Status = AcpiDsMethodDataGetNode (Opcode, Index, WalkState, &Node);
759  if (ACPI_FAILURE (Status))
760  {
762  }
763 
764  /* Get the object */
765 
767  if (!Object)
768  {
769  /* Uninitialized local/arg, return TYPE_ANY */
770 
772  }
773 
774  /* Get the object type */
775 
776  return_VALUE (Object->Type);
777 }
778 #endif
ACPI_STATUS AcpiDsMethodDataGetNode(UINT8 Type, UINT32 Index, ACPI_WALK_STATE *WalkState, ACPI_NAMESPACE_NODE **Node)
Definition: dsmthdat.c:275
void AcpiUtAddReference(ACPI_OPERAND_OBJECT *Object)
Definition: utdelete.c:747
ACPI_STATUS AcpiDsMethodDataInitArgs(ACPI_OPERAND_OBJECT **Params, UINT32 MaxParamCount, ACPI_WALK_STATE *WalkState)
Definition: dsmthdat.c:213
_In_ PVOID _In_ ULONG Opcode
Definition: hubbusif.h:330
Type
Definition: Type.h:6
#define AE_NO_MEMORY
Definition: acexcep.h:112
#define return_VALUE(s)
Definition: acoutput.h:499
#define AE_BAD_PARAMETER
Definition: acexcep.h:151
#define NAMEOF_LOCAL_NTE
Definition: acdispat.h:48
#define AE_AML_INTERNAL
Definition: acexcep.h:194
static void AcpiDsMethodDataDeleteValue(UINT8 Type, UINT32 Index, ACPI_WALK_STATE *WalkState)
Definition: dsmthdat.c:519
#define ACPI_TYPE_LOCAL_REFERENCE
Definition: actypes.h:711
#define ACPI_NO_IMPLICIT_CONVERSION
Definition: acutils.h:145
ACPI_STATUS AcpiDsStoreObjectToLocal(UINT8 Type, UINT32 Index, ACPI_OPERAND_OBJECT *ObjDesc, ACPI_WALK_STATE *WalkState)
Definition: dsmthdat.c:585
UINT32 ACPI_STATUS
Definition: actypes.h:460
#define ACPI_FAILURE(a)
Definition: acexcep.h:95
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
#define ACPI_METHOD_MAX_ARG
Definition: acconfig.h:167
#define ACPI_METHOD_NUM_LOCALS
Definition: acconfig.h:163
ACPI_OBJECT_COMMON_HEADER UINT8 Class
Definition: acobject.h:441
unsigned int UINT32
#define AE_AML_UNINITIALIZED_LOCAL
Definition: acexcep.h:184
union node Node
Definition: types.h:1255
#define ACPI_MODULE_NAME(Name)
Definition: acoutput.h:216
#define ACPI_METHOD_MAX_LOCAL
Definition: acconfig.h:164
smooth NULL
Definition: ftsmooth.c:416
#define AE_INFO
Definition: acoutput.h:230
#define NAMEOF_ARG_NTE
Definition: acdispat.h:49
UINT32 ACPI_OBJECT_TYPE
Definition: actypes.h:677
ACPI_OBJECT_REFERENCE Reference
Definition: acobject.h:538
#define ANOBJ_METHOD_ARG
Definition: aclocal.h:217
#define ACPI_FUNCTION_TRACE_PTR(a, b)
Definition: acoutput.h:481
#define ACPI_DESC_TYPE_OPERAND
Definition: acobject.h:574
void AcpiNsDetachObject(ACPI_NAMESPACE_NODE *Node)
Definition: nsobject.c:220
struct acpi_namespace_node Arguments[ACPI_METHOD_NUM_ARGS]
Definition: acstruct.h:103
void AcpiDsMethodDataDeleteAll(ACPI_WALK_STATE *WalkState)
Definition: dsmthdat.c:153
static ACPI_STATUS AcpiDsMethodDataSetValue(UINT8 Type, UINT32 Index, ACPI_OPERAND_OBJECT *Object, ACPI_WALK_STATE *WalkState)
Definition: dsmthdat.c:347
#define ACPI_TYPE_NOT_FOUND
Definition: actypes.h:735
ACPI_OPERAND_OBJECT * AcpiUtCreateIntegerObject(UINT64 Value)
Definition: utobject.c:223
#define ACPI_DEBUG_PRINT(pl)
Definition: acoutput.h:475
static const UCHAR Index[8]
Definition: usbohci.c:18
#define AE_AML_UNINITIALIZED_ARG
Definition: acexcep.h:185
ACPI_OPERAND_OBJECT * AcpiNsGetAttachedObject(ACPI_NAMESPACE_NODE *Node)
Definition: nsobject.c:308
static IUnknown Object
Definition: main.c:512
#define return_VOID
Definition: acoutput.h:495
void AcpiDsMethodDataInit(ACPI_WALK_STATE *WalkState)
Definition: dsmthdat.c:100
#define AE_AML_INVALID_INDEX
Definition: acexcep.h:203
Status
Definition: gdiplustypes.h:24
#define ACPI_TYPE_ANY
Definition: actypes.h:679
#define ACPI_MOVE_32_TO_32(d, s)
Definition: acmacros.h:148
#define AE_TYPE
Definition: acexcep.h:116
#define ACPI_DB_EXEC
Definition: acoutput.h:165
#define ANOBJ_METHOD_LOCAL
Definition: aclocal.h:218
#define return_ACPI_STATUS(s)
Definition: acoutput.h:496
#define ACPI_FUNCTION_TRACE(a)
Definition: acoutput.h:480
ACPI_OBJECT_COMMON Common
Definition: acobject.h:517
void AcpiUtRemoveReference(ACPI_OPERAND_OBJECT *Object)
Definition: utdelete.c:785
unsigned short UINT16
const char * AcpiUtGetTypeName(ACPI_OBJECT_TYPE Type)
Definition: utdecode.c:250
#define ACPI_ERROR(plist)
Definition: acoutput.h:240
struct acpi_namespace_node LocalVariables[ACPI_METHOD_NUM_LOCALS]
Definition: acstruct.h:104
ACPI_STATUS AcpiDsMethodDataGetValue(UINT8 Type, UINT32 Index, ACPI_WALK_STATE *WalkState, ACPI_OPERAND_OBJECT **DestDesc)
Definition: dsmthdat.c:406
ACPI_STATUS AcpiUtCopyIobjectToIobject(ACPI_OPERAND_OBJECT *SourceDesc, ACPI_OPERAND_OBJECT **DestDesc, ACPI_WALK_STATE *WalkState)
Definition: utcopy.c:1037
#define ACPI_DESC_TYPE_NAMED
Definition: acobject.h:575
unsigned long long UINT64
#define ACPI_METHOD_NUM_ARGS
Definition: acconfig.h:166
unsigned char UINT8
#define AE_OK
Definition: acexcep.h:97
ACPI_STATUS AcpiExStoreObjectToNode(ACPI_OPERAND_OBJECT *SourceDesc, ACPI_NAMESPACE_NODE *Node, ACPI_WALK_STATE *WalkState, UINT8 ImplicitConversion)
Definition: exstore.c:412
Definition: dlist.c:348
#define ACPI_GET_DESCRIPTOR_TYPE(d)
Definition: acmacros.h:414