aboutsummaryrefslogtreecommitdiffstats
path: root/include/acpi/acstruct.h
diff options
context:
space:
mode:
authorBob Moore <robert.moore@intel.com>2006-05-26 16:36:00 -0400
committerLen Brown <len.brown@intel.com>2006-06-14 02:44:35 -0400
commit4119532c95547821dbe72d6916dfa1b2148475b3 (patch)
tree564eb8f69924fb7dc72e93526faf1547acac7d30 /include/acpi/acstruct.h
parentb8d35192c55fb055792ff0641408eaaec7c88988 (diff)
ACPI: ACPICA 20060526
Restructured, flattened, and simplified the internal interfaces for namespace object evaluation - resulting in smaller code, less CPU stack use, and fewer interfaces. (With assistance from Mikhail Kouzmich) Fixed a problem with the CopyObject operator where the first parameter was not typed correctly for the parser, interpreter, compiler, and disassembler. Caused various errors and unexpected behavior. Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits produced incorrect results with some C compilers. Since the behavior of C compilers when the shift value is larger than the datatype width is apparently not well defined, the interpreter now detects this condition and simply returns zero as expected in all such cases. (BZ 395) Fixed problem reports (Valery Podrezov) integrated: - Update String-to-Integer conversion to match ACPI 3.0A spec http://bugzilla.kernel.org/show_bug.cgi?id=5329 Allow interpreter to handle nested method declarations http://bugzilla.kernel.org/show_bug.cgi?id=5361 Fixed problem reports (Fiodor Suietov) integrated: - acpi_terminate() doesn't free debug memory allocation list objects (BZ 355) - After Core Subsystem shutdown, acpi_subsystem_status() returns AE_OK (BZ 356) - acpi_os_unmap_memory() for RSDP can be invoked inconsistently (BZ 357) - Resource Manager should return AE_TYPE for non-device objects (BZ 358) - Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359) - Use acpi_os_free() instead of ACPI_FREE in acpi_rs_set_srs_method_data (BZ 360) - Incomplete cleanup branch in acpi_ps_parse_aml (BZ 361) - Incomplete cleanup branch in acpi_ds_delete_walk_state (BZ 362) - acpi_get_table_header returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ 365) - Status of the Global Initialization Handler call not used (BZ 366) - Incorrect object parameter to Global Initialization Handler (BZ 367) Signed-off-by: Bob Moore <robert.moore@intel.com> Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'include/acpi/acstruct.h')
-rw-r--r--include/acpi/acstruct.h90
1 files changed, 54 insertions, 36 deletions
diff --git a/include/acpi/acstruct.h b/include/acpi/acstruct.h
index b8a6d6110d57..5e8095f0f78f 100644
--- a/include/acpi/acstruct.h
+++ b/include/acpi/acstruct.h
@@ -53,17 +53,25 @@
53 ****************************************************************************/ 53 ****************************************************************************/
54 54
55/* 55/*
56 * Walk state - current state of a parse tree walk. Used for both a leisurely stroll through 56 * Walk state - current state of a parse tree walk. Used for both a leisurely
57 * the tree (for whatever reason), and for control method execution. 57 * stroll through the tree (for whatever reason), and for control method
58 * execution.
58 */ 59 */
59#define ACPI_NEXT_OP_DOWNWARD 1 60#define ACPI_NEXT_OP_DOWNWARD 1
60#define ACPI_NEXT_OP_UPWARD 2 61#define ACPI_NEXT_OP_UPWARD 2
61 62
63/*
64 * Groups of definitions for walk_type used for different implementations of
65 * walkers (never simultaneously) - flags for interpreter:
66 */
62#define ACPI_WALK_NON_METHOD 0 67#define ACPI_WALK_NON_METHOD 0
63#define ACPI_WALK_METHOD 1 68#define ACPI_WALK_METHOD 0x01
64#define ACPI_WALK_METHOD_RESTART 2 69#define ACPI_WALK_METHOD_RESTART 0x02
65#define ACPI_WALK_CONST_REQUIRED 3 70
66#define ACPI_WALK_CONST_OPTIONAL 4 71/* Flags for i_aSL compiler only */
72
73#define ACPI_WALK_CONST_REQUIRED 0x10
74#define ACPI_WALK_CONST_OPTIONAL 0x20
67 75
68struct acpi_walk_state { 76struct acpi_walk_state {
69 struct acpi_walk_state *next; /* Next walk_state in list */ 77 struct acpi_walk_state *next; /* Next walk_state in list */
@@ -134,32 +142,6 @@ struct acpi_init_walk_info {
134 struct acpi_table_desc *table_desc; 142 struct acpi_table_desc *table_desc;
135}; 143};
136 144
137/* Info used by acpi_ns_initialize_devices */
138
139struct acpi_device_walk_info {
140 u16 device_count;
141 u16 num_STA;
142 u16 num_INI;
143 struct acpi_table_desc *table_desc;
144};
145
146/* TBD: [Restructure] Merge with struct above */
147
148struct acpi_walk_info {
149 u32 debug_level;
150 u32 count;
151 acpi_owner_id owner_id;
152 u8 display_type;
153};
154
155/* Display Types */
156
157#define ACPI_DISPLAY_SUMMARY (u8) 0
158#define ACPI_DISPLAY_OBJECTS (u8) 1
159#define ACPI_DISPLAY_MASK (u8) 1
160
161#define ACPI_DISPLAY_SHORT (u8) 2
162
163struct acpi_get_devices_info { 145struct acpi_get_devices_info {
164 acpi_walk_callback user_function; 146 acpi_walk_callback user_function;
165 void *context; 147 void *context;
@@ -192,16 +174,21 @@ union acpi_aml_operands {
192 } mid; 174 } mid;
193}; 175};
194 176
195/* Internal method parameter list */ 177/*
196 178 * Structure used to pass object evaluation parameters.
197struct acpi_parameter_info { 179 * Purpose is to reduce CPU stack use.
198 struct acpi_namespace_node *node; 180 */
181struct acpi_evaluate_info {
182 struct acpi_namespace_node *prefix_node;
183 char *pathname;
199 union acpi_operand_object *obj_desc; 184 union acpi_operand_object *obj_desc;
200 union acpi_operand_object **parameters; 185 union acpi_operand_object **parameters;
186 struct acpi_namespace_node *resolved_node;
201 union acpi_operand_object *return_object; 187 union acpi_operand_object *return_object;
202 u8 pass_number; 188 u8 pass_number;
203 u8 parameter_type; 189 u8 parameter_type;
204 u8 return_object_type; 190 u8 return_object_type;
191 u8 flags;
205}; 192};
206 193
207/* Types for parameter_type above */ 194/* Types for parameter_type above */
@@ -209,4 +196,35 @@ struct acpi_parameter_info {
209#define ACPI_PARAM_ARGS 0 196#define ACPI_PARAM_ARGS 0
210#define ACPI_PARAM_GPE 1 197#define ACPI_PARAM_GPE 1
211 198
199/* Values for Flags above */
200
201#define ACPI_IGNORE_RETURN_VALUE 1
202
203/* Info used by acpi_ns_initialize_devices */
204
205struct acpi_device_walk_info {
206 u16 device_count;
207 u16 num_STA;
208 u16 num_INI;
209 struct acpi_table_desc *table_desc;
210 struct acpi_evaluate_info *evaluate_info;
211};
212
213/* TBD: [Restructure] Merge with struct above */
214
215struct acpi_walk_info {
216 u32 debug_level;
217 u32 count;
218 acpi_owner_id owner_id;
219 u8 display_type;
220};
221
222/* Display Types */
223
224#define ACPI_DISPLAY_SUMMARY (u8) 0
225#define ACPI_DISPLAY_OBJECTS (u8) 1
226#define ACPI_DISPLAY_MASK (u8) 1
227
228#define ACPI_DISPLAY_SHORT (u8) 2
229
212#endif 230#endif