ReactOS  0.4.14-dev-1276-g8aa58c1
exstore.c File Reference
#include "acpi.h"
#include "accommon.h"
#include "acdispat.h"
#include "acinterp.h"
#include "amlcode.h"
#include "acnamesp.h"
Include dependency graph for exstore.c:

Go to the source code of this file.

Macros

#define _COMPONENT   ACPI_EXECUTER
 

Functions

static ACPI_STATUS AcpiExStoreObjectToIndex (ACPI_OPERAND_OBJECT *ValDesc, ACPI_OPERAND_OBJECT *DestDesc, ACPI_WALK_STATE *WalkState)
 
static ACPI_STATUS AcpiExStoreDirectToNode (ACPI_OPERAND_OBJECT *SourceDesc, ACPI_NAMESPACE_NODE *Node, ACPI_WALK_STATE *WalkState)
 
ACPI_STATUS AcpiExStore (ACPI_OPERAND_OBJECT *SourceDesc, ACPI_OPERAND_OBJECT *DestDesc, ACPI_WALK_STATE *WalkState)
 
ACPI_STATUS AcpiExStoreObjectToNode (ACPI_OPERAND_OBJECT *SourceDesc, ACPI_NAMESPACE_NODE *Node, ACPI_WALK_STATE *WalkState, UINT8 ImplicitConversion)
 

Macro Definition Documentation

◆ _COMPONENT

#define _COMPONENT   ACPI_EXECUTER

Definition at line 52 of file exstore.c.

Function Documentation

◆ AcpiExStore()

ACPI_STATUS AcpiExStore ( ACPI_OPERAND_OBJECT SourceDesc,
ACPI_OPERAND_OBJECT DestDesc,
ACPI_WALK_STATE WalkState 
)

Definition at line 91 of file exstore.c.

95 {
97  ACPI_OPERAND_OBJECT *RefDesc = DestDesc;
98 
99 
100  ACPI_FUNCTION_TRACE_PTR (ExStore, DestDesc);
101 
102 
103  /* Validate parameters */
104 
105  if (!SourceDesc || !DestDesc)
106  {
107  ACPI_ERROR ((AE_INFO, "Null parameter"));
109  }
110 
111  /* DestDesc can be either a namespace node or an ACPI object */
112 
114  {
115  /*
116  * Dest is a namespace node,
117  * Storing an object into a Named node.
118  */
119  Status = AcpiExStoreObjectToNode (SourceDesc,
120  (ACPI_NAMESPACE_NODE *) DestDesc, WalkState,
122 
124  }
125 
126  /* Destination object must be a Reference or a Constant object */
127 
128  switch (DestDesc->Common.Type)
129  {
131 
132  break;
133 
134  case ACPI_TYPE_INTEGER:
135 
136  /* Allow stores to Constants -- a Noop as per ACPI spec */
137 
138  if (DestDesc->Common.Flags & AOPOBJ_AML_CONSTANT)
139  {
141  }
142 
143  /*lint -fallthrough */
144 
145  default:
146 
147  /* Destination is not a Reference object */
148 
150  "Target is not a Reference or Constant object - [%s] %p",
151  AcpiUtGetObjectTypeName (DestDesc), DestDesc));
152 
154  }
155 
156  /*
157  * Examine the Reference class. These cases are handled:
158  *
159  * 1) Store to Name (Change the object associated with a name)
160  * 2) Store to an indexed area of a Buffer or Package
161  * 3) Store to a Method Local or Arg
162  * 4) Store to the debug object
163  */
164  switch (RefDesc->Reference.Class)
165  {
166  case ACPI_REFCLASS_REFOF:
167 
168  /* Storing an object into a Name "container" */
169 
170  Status = AcpiExStoreObjectToNode (SourceDesc,
171  RefDesc->Reference.Object,
172  WalkState, ACPI_IMPLICIT_CONVERSION);
173  break;
174 
175  case ACPI_REFCLASS_INDEX:
176 
177  /* Storing to an Index (pointer into a packager or buffer) */
178 
179  Status = AcpiExStoreObjectToIndex (SourceDesc, RefDesc, WalkState);
180  break;
181 
182  case ACPI_REFCLASS_LOCAL:
183  case ACPI_REFCLASS_ARG:
184 
185  /* Store to a method local/arg */
186 
188  RefDesc->Reference.Value, SourceDesc, WalkState);
189  break;
190 
191  case ACPI_REFCLASS_DEBUG:
192  /*
193  * Storing to the Debug object causes the value stored to be
194  * displayed and otherwise has no effect -- see ACPI Specification
195  */
197  "**** Write to Debug Object: Object %p [%s] ****:\n\n",
198  SourceDesc, AcpiUtGetObjectTypeName (SourceDesc)));
199 
200  ACPI_DEBUG_OBJECT (SourceDesc, 0, 0);
201  break;
202 
203  default:
204 
205  ACPI_ERROR ((AE_INFO, "Unknown Reference Class 0x%2.2X",
206  RefDesc->Reference.Class));
207  ACPI_DUMP_ENTRY (RefDesc, ACPI_LV_INFO);
208 
210  break;
211  }
212 
214 }
#define ACPI_TYPE_INTEGER
Definition: actypes.h:680
#define AE_AML_INTERNAL
Definition: acexcep.h:194
#define AE_AML_NO_OPERAND
Definition: acexcep.h:181
#define ACPI_TYPE_LOCAL_REFERENCE
Definition: actypes.h:711
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 AE_AML_OPERAND_TYPE
Definition: acexcep.h:182
#define AOPOBJ_AML_CONSTANT
Definition: acobject.h:94
ACPI_OBJECT_COMMON_HEADER UINT8 Class
Definition: acobject.h:441
static ACPI_STATUS AcpiExStoreObjectToIndex(ACPI_OPERAND_OBJECT *ValDesc, ACPI_OPERAND_OBJECT *DestDesc, ACPI_WALK_STATE *WalkState)
Definition: exstore.c:232
#define AE_INFO
Definition: acoutput.h:230
ACPI_OBJECT_REFERENCE Reference
Definition: acobject.h:538
#define ACPI_FUNCTION_TRACE_PTR(a, b)
Definition: acoutput.h:481
#define ACPI_DEBUG_PRINT(pl)
Definition: acoutput.h:475
#define ACPI_LV_INFO
Definition: acoutput.h:90
#define ACPI_DEBUG_OBJECT(obj, l, i)
Definition: acoutput.h:244
Status
Definition: gdiplustypes.h:24
#define ACPI_DB_EXEC
Definition: acoutput.h:165
#define return_ACPI_STATUS(s)
Definition: acoutput.h:496
ACPI_OBJECT_COMMON Common
Definition: acobject.h:517
#define ACPI_ERROR(plist)
Definition: acoutput.h:240
#define ACPI_DUMP_ENTRY(a, b)
Definition: acoutput.h:487
#define ACPI_DESC_TYPE_NAMED
Definition: acobject.h:575
const char * AcpiUtGetObjectTypeName(ACPI_OPERAND_OBJECT *ObjDesc)
Definition: utdecode.c:263
#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
#define ACPI_GET_DESCRIPTOR_TYPE(d)
Definition: acmacros.h:414
#define ACPI_IMPLICIT_CONVERSION
Definition: acutils.h:144

Referenced by AcpiExLoadOp(), AcpiExLoadTableOp(), AcpiExOpcode_1A_0T_1R(), AcpiExOpcode_1A_1T_1R(), AcpiExOpcode_2A_1T_1R(), AcpiExOpcode_2A_2T_1R(), and AcpiExOpcode_3A_1T_1R().

◆ AcpiExStoreDirectToNode()

static ACPI_STATUS AcpiExStoreDirectToNode ( ACPI_OPERAND_OBJECT SourceDesc,
ACPI_NAMESPACE_NODE Node,
ACPI_WALK_STATE WalkState 
)
static

Definition at line 613 of file exstore.c.

617 {
619  ACPI_OPERAND_OBJECT *NewDesc;
620 
621 
622  ACPI_FUNCTION_TRACE (ExStoreDirectToNode);
623 
624 
626  "Storing [%s] (%p) directly into node [%s] (%p)"
627  " with no implicit conversion\n",
628  AcpiUtGetObjectTypeName (SourceDesc), SourceDesc,
629  AcpiUtGetTypeName (Node->Type), Node));
630 
631  /* Copy the source object to a new object */
632 
633  Status = AcpiUtCopyIobjectToIobject (SourceDesc, &NewDesc, WalkState);
634  if (ACPI_FAILURE (Status))
635  {
637  }
638 
639  /* Attach the new object to the node */
640 
641  Status = AcpiNsAttachObject (Node, NewDesc, NewDesc->Common.Type);
642  AcpiUtRemoveReference (NewDesc);
644 }
UINT32 ACPI_STATUS
Definition: actypes.h:460
#define ACPI_FAILURE(a)
Definition: acexcep.h:95
#define ACPI_DEBUG_PRINT(pl)
Definition: acoutput.h:475
Status
Definition: gdiplustypes.h:24
#define ACPI_DB_EXEC
Definition: acoutput.h:165
ACPI_STATUS AcpiNsAttachObject(ACPI_NAMESPACE_NODE *Node, ACPI_OPERAND_OBJECT *Object, ACPI_OBJECT_TYPE Type)
Definition: nsobject.c:76
#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:784
const char * AcpiUtGetTypeName(ACPI_OBJECT_TYPE Type)
Definition: utdecode.c:249
ACPI_STATUS AcpiUtCopyIobjectToIobject(ACPI_OPERAND_OBJECT *SourceDesc, ACPI_OPERAND_OBJECT **DestDesc, ACPI_WALK_STATE *WalkState)
Definition: utcopy.c:1037
const char * AcpiUtGetObjectTypeName(ACPI_OPERAND_OBJECT *ObjDesc)
Definition: utdecode.c:263
Definition: dlist.c:348

Referenced by AcpiExStoreObjectToNode().

◆ AcpiExStoreObjectToIndex()

static ACPI_STATUS AcpiExStoreObjectToIndex ( ACPI_OPERAND_OBJECT ValDesc,
ACPI_OPERAND_OBJECT DestDesc,
ACPI_WALK_STATE WalkState 
)
static

Definition at line 232 of file exstore.c.

236 {
238  ACPI_OPERAND_OBJECT *ObjDesc;
239  ACPI_OPERAND_OBJECT *NewDesc;
240  UINT8 Value = 0;
241  UINT32 i;
242 
243 
244  ACPI_FUNCTION_TRACE (ExStoreObjectToIndex);
245 
246 
247  /*
248  * Destination must be a reference pointer, and
249  * must point to either a buffer or a package
250  */
251  switch (IndexDesc->Reference.TargetType)
252  {
253  case ACPI_TYPE_PACKAGE:
254  /*
255  * Storing to a package element. Copy the object and replace
256  * any existing object with the new object. No implicit
257  * conversion is performed.
258  *
259  * The object at *(IndexDesc->Reference.Where) is the
260  * element within the package that is to be modified.
261  * The parent package object is at IndexDesc->Reference.Object
262  */
263  ObjDesc = *(IndexDesc->Reference.Where);
264 
265  if (SourceDesc->Common.Type == ACPI_TYPE_LOCAL_REFERENCE &&
266  SourceDesc->Reference.Class == ACPI_REFCLASS_TABLE)
267  {
268  /* This is a DDBHandle, just add a reference to it */
269 
270  AcpiUtAddReference (SourceDesc);
271  NewDesc = SourceDesc;
272  }
273  else
274  {
275  /* Normal object, copy it */
276 
278  SourceDesc, &NewDesc, WalkState);
279  if (ACPI_FAILURE (Status))
280  {
282  }
283  }
284 
285  if (ObjDesc)
286  {
287  /* Decrement reference count by the ref count of the parent package */
288 
289  for (i = 0;
290  i < ((ACPI_OPERAND_OBJECT *)
291  IndexDesc->Reference.Object)->Common.ReferenceCount;
292  i++)
293  {
294  AcpiUtRemoveReference (ObjDesc);
295  }
296  }
297 
298  *(IndexDesc->Reference.Where) = NewDesc;
299 
300  /* Increment ref count by the ref count of the parent package-1 */
301 
302  for (i = 1;
303  i < ((ACPI_OPERAND_OBJECT *)
304  IndexDesc->Reference.Object)->Common.ReferenceCount;
305  i++)
306  {
307  AcpiUtAddReference (NewDesc);
308  }
309 
310  break;
311 
313  /*
314  * Store into a Buffer or String (not actually a real BufferField)
315  * at a location defined by an Index.
316  *
317  * The first 8-bit element of the source object is written to the
318  * 8-bit Buffer location defined by the Index destination object,
319  * according to the ACPI 2.0 specification.
320  */
321 
322  /*
323  * Make sure the target is a Buffer or String. An error should
324  * not happen here, since the ReferenceObject was constructed
325  * by the INDEX_OP code.
326  */
327  ObjDesc = IndexDesc->Reference.Object;
328  if ((ObjDesc->Common.Type != ACPI_TYPE_BUFFER) &&
329  (ObjDesc->Common.Type != ACPI_TYPE_STRING))
330  {
332  }
333 
334  /*
335  * The assignment of the individual elements will be slightly
336  * different for each source type.
337  */
338  switch (SourceDesc->Common.Type)
339  {
340  case ACPI_TYPE_INTEGER:
341 
342  /* Use the least-significant byte of the integer */
343 
344  Value = (UINT8) (SourceDesc->Integer.Value);
345  break;
346 
347  case ACPI_TYPE_BUFFER:
348  case ACPI_TYPE_STRING:
349 
350  /* Note: Takes advantage of common string/buffer fields */
351 
352  Value = SourceDesc->Buffer.Pointer[0];
353  break;
354 
355  default:
356 
357  /* All other types are invalid */
358 
360  "Source must be type [Integer/Buffer/String], found [%s]",
361  AcpiUtGetObjectTypeName (SourceDesc)));
363  }
364 
365  /* Store the source value into the target buffer byte */
366 
367  ObjDesc->Buffer.Pointer[IndexDesc->Reference.Value] = Value;
368  break;
369 
370  default:
372  "Target is not of type [Package/BufferField]"));
374  break;
375  }
376 
378 }
_In_opt_ ULONG _Out_ PULONG Value
Definition: rtlfuncs.h:2374
void AcpiUtAddReference(ACPI_OPERAND_OBJECT *Object)
Definition: utdelete.c:746
#define AE_AML_TARGET_TYPE
Definition: acexcep.h:214
#define ACPI_TYPE_BUFFER
Definition: actypes.h:682
#define ACPI_TYPE_INTEGER
Definition: actypes.h:680
#define ACPI_TYPE_LOCAL_REFERENCE
Definition: actypes.h:711
UINT32 ACPI_STATUS
Definition: actypes.h:460
#define AE_AML_OPERAND_TYPE
Definition: acexcep.h:182
#define ACPI_TYPE_PACKAGE
Definition: actypes.h:683
#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
unsigned int UINT32
#define AE_INFO
Definition: acoutput.h:230
ACPI_OBJECT_REFERENCE Reference
Definition: acobject.h:538
ACPI_OBJECT_BUFFER Buffer
Definition: acobject.h:520
Status
Definition: gdiplustypes.h:24
#define return_ACPI_STATUS(s)
Definition: acoutput.h:496
#define ACPI_FUNCTION_TRACE(a)
Definition: acoutput.h:480
#define ACPI_TYPE_BUFFER_FIELD
Definition: actypes.h:693
ACPI_OBJECT_COMMON Common
Definition: acobject.h:517
void AcpiUtRemoveReference(ACPI_OPERAND_OBJECT *Object)
Definition: utdelete.c:784
#define ACPI_ERROR(plist)
Definition: acoutput.h:240
ACPI_STATUS AcpiUtCopyIobjectToIobject(ACPI_OPERAND_OBJECT *SourceDesc, ACPI_OPERAND_OBJECT **DestDesc, ACPI_WALK_STATE *WalkState)
Definition: utcopy.c:1037
#define ACPI_TYPE_STRING
Definition: actypes.h:681
unsigned char UINT8
const char * AcpiUtGetObjectTypeName(ACPI_OPERAND_OBJECT *ObjDesc)
Definition: utdecode.c:263
#define AE_OK
Definition: acexcep.h:97

Referenced by AcpiExStore().

◆ AcpiExStoreObjectToNode()

ACPI_STATUS AcpiExStoreObjectToNode ( ACPI_OPERAND_OBJECT SourceDesc,
ACPI_NAMESPACE_NODE Node,
ACPI_WALK_STATE WalkState,
UINT8  ImplicitConversion 
)

Definition at line 412 of file exstore.c.

417 {
419  ACPI_OPERAND_OBJECT *TargetDesc;
420  ACPI_OPERAND_OBJECT *NewDesc;
421  ACPI_OBJECT_TYPE TargetType;
422 
423 
424  ACPI_FUNCTION_TRACE_PTR (ExStoreObjectToNode, SourceDesc);
425 
426 
427  /* Get current type of the node, and object attached to Node */
428 
429  TargetType = AcpiNsGetType (Node);
430  TargetDesc = AcpiNsGetAttachedObject (Node);
431 
432  ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Storing %p [%s] to node %p [%s]\n",
433  SourceDesc, AcpiUtGetObjectTypeName (SourceDesc),
434  Node, AcpiUtGetTypeName (TargetType)));
435 
436  /* Only limited target types possible for everything except CopyObject */
437 
438  if (WalkState->Opcode != AML_COPY_OBJECT_OP)
439  {
440  /*
441  * Only CopyObject allows all object types to be overwritten. For
442  * TargetRef(s), there are restrictions on the object types that
443  * are allowed.
444  *
445  * Allowable operations/typing for Store:
446  *
447  * 1) Simple Store
448  * Integer --> Integer (Named/Local/Arg)
449  * String --> String (Named/Local/Arg)
450  * Buffer --> Buffer (Named/Local/Arg)
451  * Package --> Package (Named/Local/Arg)
452  *
453  * 2) Store with implicit conversion
454  * Integer --> String or Buffer (Named)
455  * String --> Integer or Buffer (Named)
456  * Buffer --> Integer or String (Named)
457  */
458  switch (TargetType)
459  {
460  case ACPI_TYPE_PACKAGE:
461  /*
462  * Here, can only store a package to an existing package.
463  * Storing a package to a Local/Arg is OK, and handled
464  * elsewhere.
465  */
466  if (WalkState->Opcode == AML_STORE_OP)
467  {
468  if (SourceDesc->Common.Type != ACPI_TYPE_PACKAGE)
469  {
471  "Cannot assign type [%s] to [Package] "
472  "(source must be type Pkg)",
473  AcpiUtGetObjectTypeName (SourceDesc)));
474 
476  }
477  break;
478  }
479 
480  /* Fallthrough */
481 
482  case ACPI_TYPE_DEVICE:
483  case ACPI_TYPE_EVENT:
484  case ACPI_TYPE_MUTEX:
485  case ACPI_TYPE_REGION:
486  case ACPI_TYPE_POWER:
487  case ACPI_TYPE_PROCESSOR:
488  case ACPI_TYPE_THERMAL:
489 
491  "Target must be [Buffer/Integer/String/Reference]"
492  ", found [%s] (%4.4s)",
493  AcpiUtGetTypeName (Node->Type), Node->Name.Ascii));
494 
496 
497  default:
498  break;
499  }
500  }
501 
502  /*
503  * Resolve the source object to an actual value
504  * (If it is a reference object)
505  */
506  Status = AcpiExResolveObject (&SourceDesc, TargetType, WalkState);
507  if (ACPI_FAILURE (Status))
508  {
510  }
511 
512  /* Do the actual store operation */
513 
514  switch (TargetType)
515  {
516  /*
517  * The simple data types all support implicit source operand
518  * conversion before the store.
519  */
520  case ACPI_TYPE_INTEGER:
521  case ACPI_TYPE_STRING:
522  case ACPI_TYPE_BUFFER:
523 
524  if ((WalkState->Opcode == AML_COPY_OBJECT_OP) ||
525  !ImplicitConversion)
526  {
527  /*
528  * However, CopyObject and Stores to ArgX do not perform
529  * an implicit conversion, as per the ACPI specification.
530  * A direct store is performed instead.
531  */
532  Status = AcpiExStoreDirectToNode (SourceDesc, Node, WalkState);
533  break;
534  }
535 
536  /* Store with implicit source operand conversion support */
537 
538  Status = AcpiExStoreObjectToObject (SourceDesc, TargetDesc,
539  &NewDesc, WalkState);
540  if (ACPI_FAILURE (Status))
541  {
543  }
544 
545  if (NewDesc != TargetDesc)
546  {
547  /*
548  * Store the new NewDesc as the new value of the Name, and set
549  * the Name's type to that of the value being stored in it.
550  * SourceDesc reference count is incremented by AttachObject.
551  *
552  * Note: This may change the type of the node if an explicit
553  * store has been performed such that the node/object type
554  * has been changed.
555  */
557  Node, NewDesc, NewDesc->Common.Type);
558 
560  "Store type [%s] into [%s] via Convert/Attach\n",
561  AcpiUtGetObjectTypeName (SourceDesc),
562  AcpiUtGetObjectTypeName (NewDesc)));
563  }
564  break;
565 
570  /*
571  * For all fields, always write the source data to the target
572  * field. Any required implicit source operand conversion is
573  * performed in the function below as necessary. Note, field
574  * objects must retain their original type permanently.
575  */
576  Status = AcpiExWriteDataToField (SourceDesc, TargetDesc,
577  &WalkState->ResultObj);
578  break;
579 
580  default:
581  /*
582  * CopyObject operator: No conversions for all other types.
583  * Instead, directly store a copy of the source object.
584  *
585  * This is the ACPI spec-defined behavior for the CopyObject
586  * operator. (Note, for this default case, all normal
587  * Store/Target operations exited above with an error).
588  */
589  Status = AcpiExStoreDirectToNode (SourceDesc, Node, WalkState);
590  break;
591  }
592 
594 }
#define ACPI_TYPE_EVENT
Definition: actypes.h:686
#define ACPI_TYPE_THERMAL
Definition: actypes.h:692
#define AE_AML_TARGET_TYPE
Definition: acexcep.h:214
#define ACPI_TYPE_BUFFER
Definition: actypes.h:682
#define ACPI_TYPE_INTEGER
Definition: actypes.h:680
ACPI_STATUS AcpiExResolveObject(ACPI_OPERAND_OBJECT **SourceDescPtr, ACPI_OBJECT_TYPE TargetType, ACPI_WALK_STATE *WalkState)
Definition: exstoren.c:71
#define ACPI_TYPE_POWER
Definition: actypes.h:690
UINT32 ACPI_STATUS
Definition: actypes.h:460
#define ACPI_TYPE_LOCAL_INDEX_FIELD
Definition: actypes.h:710
ACPI_OBJECT_TYPE AcpiNsGetType(ACPI_NAMESPACE_NODE *Node)
Definition: nsutils.c:120
#define ACPI_TYPE_PACKAGE
Definition: actypes.h:683
#define ACPI_FAILURE(a)
Definition: acexcep.h:95
static ACPI_STATUS AcpiExStoreDirectToNode(ACPI_OPERAND_OBJECT *SourceDesc, ACPI_NAMESPACE_NODE *Node, ACPI_WALK_STATE *WalkState)
Definition: exstore.c:613
ACPI_STATUS AcpiExWriteDataToField(ACPI_OPERAND_OBJECT *SourceDesc, ACPI_OPERAND_OBJECT *ObjDesc, ACPI_OPERAND_OBJECT **ResultDesc)
Definition: exfield.c:315
#define AE_INFO
Definition: acoutput.h:230
ACPI_STATUS AcpiExStoreObjectToObject(ACPI_OPERAND_OBJECT *SourceDesc, ACPI_OPERAND_OBJECT *DestDesc, ACPI_OPERAND_OBJECT **NewDesc, ACPI_WALK_STATE *WalkState)
Definition: exstoren.c:199
UINT32 ACPI_OBJECT_TYPE
Definition: actypes.h:677
#define ACPI_FUNCTION_TRACE_PTR(a, b)
Definition: acoutput.h:481
#define AML_STORE_OP
Definition: amlcode.h:88
union acpi_operand_object * ResultObj
Definition: acstruct.h:121
#define AML_COPY_OBJECT_OP
Definition: amlcode.h:131
#define ACPI_DEBUG_PRINT(pl)
Definition: acoutput.h:475
ACPI_OPERAND_OBJECT * AcpiNsGetAttachedObject(ACPI_NAMESPACE_NODE *Node)
Definition: nsobject.c:308
#define ACPI_TYPE_LOCAL_REGION_FIELD
Definition: actypes.h:708
#define ACPI_TYPE_DEVICE
Definition: actypes.h:685
#define ACPI_TYPE_PROCESSOR
Definition: actypes.h:691
Status
Definition: gdiplustypes.h:24
#define ACPI_DB_EXEC
Definition: acoutput.h:165
ACPI_STATUS AcpiNsAttachObject(ACPI_NAMESPACE_NODE *Node, ACPI_OPERAND_OBJECT *Object, ACPI_OBJECT_TYPE Type)
Definition: nsobject.c:76
#define return_ACPI_STATUS(s)
Definition: acoutput.h:496
#define ACPI_TYPE_BUFFER_FIELD
Definition: actypes.h:693
ACPI_OBJECT_COMMON Common
Definition: acobject.h:517
const char * AcpiUtGetTypeName(ACPI_OBJECT_TYPE Type)
Definition: utdecode.c:249
#define ACPI_TYPE_MUTEX
Definition: actypes.h:688
#define ACPI_ERROR(plist)
Definition: acoutput.h:240
#define ACPI_TYPE_REGION
Definition: actypes.h:689
#define ACPI_TYPE_LOCAL_BANK_FIELD
Definition: actypes.h:709
UINT16 Opcode
Definition: acstruct.h:78
#define ACPI_TYPE_STRING
Definition: actypes.h:681
const char * AcpiUtGetObjectTypeName(ACPI_OPERAND_OBJECT *ObjDesc)
Definition: utdecode.c:263
#define AE_OK
Definition: acexcep.h:97
Definition: dlist.c:348

Referenced by AcpiDsStoreObjectToLocal(), and AcpiExStore().