summaryrefslogtreecommitdiff
path: root/source/include/acstruct.h
diff options
context:
space:
mode:
authorRobert Moore <Robert.Moore@intel.com>2013-04-12 14:31:19 -0700
committerRobert Moore <Robert.Moore@intel.com>2013-04-12 14:31:19 -0700
commit9b46d42b758dd101c0333c3fed7974ab7d1e5028 (patch)
treef5437520a9971fa0096bce964d5c6ad03f9b7b82 /source/include/acstruct.h
parentf9c8728fda573246eaa2cdb40004febcaf4b37c5 (diff)
downloadacpica-9b46d42b758dd101c0333c3fed7974ab7d1e5028.tar.gz
Add argument typechecking for all predefined ACPI names.
Fully implements typechecking on all incoming arguments for all predefined names. This ensures that ACPI-related drivers are passing the correct number of arguments, each of the correct object type. Argument counts are checked for the incoming arguments as well as for the actual ASL definition of the ACPI name itself (it must match the ACPI specification).
Diffstat (limited to 'source/include/acstruct.h')
-rw-r--r--source/include/acstruct.h40
1 files changed, 28 insertions, 12 deletions
diff --git a/source/include/acstruct.h b/source/include/acstruct.h
index 7e07b635b..aa0f9dd2b 100644
--- a/source/include/acstruct.h
+++ b/source/include/acstruct.h
@@ -267,27 +267,43 @@ typedef union acpi_aml_operands
/*
- * Structure used to pass object evaluation parameters.
+ * Structure used to pass object evaluation information and parameters.
* Purpose is to reduce CPU stack use.
*/
typedef struct acpi_evaluate_info
{
- ACPI_NAMESPACE_NODE *PrefixNode;
- char *Pathname;
- ACPI_OPERAND_OBJECT *ObjDesc;
- ACPI_OPERAND_OBJECT **Parameters;
- ACPI_NAMESPACE_NODE *ResolvedNode;
- ACPI_OPERAND_OBJECT *ReturnObject;
- UINT8 ParamCount;
- UINT8 PassNumber;
- UINT8 ReturnObjectType;
- UINT8 Flags;
+ /* The first 3 elements are passed by the caller to AcpiNsEvaluate */
+
+ ACPI_NAMESPACE_NODE *PrefixNode; /* Input: starting node */
+ char *RelativePathname; /* Input: path relative to PrefixNode */
+ ACPI_OPERAND_OBJECT **Parameters; /* Input: argument list */
+
+ ACPI_NAMESPACE_NODE *Node; /* Resolved node (PrefixNode:RelativePathname) */
+ ACPI_OPERAND_OBJECT *ObjDesc; /* Object attached to the resolved node */
+ char *FullPathname; /* Full pathname of the resolved node */
+
+ const ACPI_PREDEFINED_INFO *Predefined; /* Used if Node is a predefined name */
+ ACPI_OPERAND_OBJECT *ReturnObject; /* Object returned from the evaluation */
+ union acpi_operand_object *ParentPackage; /* Used if return object is a Package */
+
+ UINT32 ReturnFlags; /* Used for return value analysis */
+ UINT32 ReturnBtype; /* Bitmapped type of the returned object */
+ UINT16 ParamCount; /* Count of the input argument list */
+ UINT8 PassNumber; /* Parser pass number */
+ UINT8 ReturnObjectType; /* Object type of the returned object */
+ UINT8 NodeFlags; /* Same as Node->Flags */
+ UINT8 Flags; /* General flags */
} ACPI_EVALUATE_INFO;
/* Values for Flags above */
-#define ACPI_IGNORE_RETURN_VALUE 1
+#define ACPI_IGNORE_RETURN_VALUE 1
+
+/* Defines for ReturnFlags field above */
+
+#define ACPI_OBJECT_REPAIRED 1
+#define ACPI_OBJECT_WRAPPED 2
/* Info used by AcpiNsInitializeDevices */