aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi/events
diff options
context:
space:
mode:
authorBob Moore <robert.moore@intel.com>2006-03-17 16:44:00 -0500
committerLen Brown <len.brown@intel.com>2006-06-14 01:22:20 -0400
commit61686124f47d7c4b78610346c5f8f9d8a6d46bb5 (patch)
tree6fd91b2c1749907e58ef136107e53d634d7978c4 /drivers/acpi/events
parent144c87b4e03759214c362d267e01c2905f1ab095 (diff)
[ACPI] ACPICA 20060317
Implemented the use of a cache object for all internal namespace nodes. Since there are about 1000 static nodes in a typical system, this will decrease memory use for cache implementations that minimize per-allocation overhead (such as a slab allocator.) Removed the reference count mechanism for internal namespace nodes, since it was deemed unnecessary. This reduces the size of each namespace node by about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit case, and 32 bytes for the 64-bit case. Optimized several internal data structures to reduce object size on 64-bit platforms by packing data within the 64-bit alignment. This includes the frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static instances corresponding to the namespace objects. Added two new strings for the predefined _OSI method: "Windows 2001.1 SP1" and "Windows 2006". Split the allocation tracking mechanism out to a separate file, from utalloc.c to uttrack.c. This mechanism appears to be only useful for application-level code. Kernels may wish to not include uttrack.c in distributions. Removed all remnants of the obsolete ACPI_REPORT_* macros and the associated code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING macros.) Signed-off-by: Bob Moore <robert.moore@intel.com> Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers/acpi/events')
-rw-r--r--drivers/acpi/events/evgpeblk.c2
-rw-r--r--drivers/acpi/events/evmisc.c3
-rw-r--r--drivers/acpi/events/evregion.c15
3 files changed, 9 insertions, 11 deletions
diff --git a/drivers/acpi/events/evgpeblk.c b/drivers/acpi/events/evgpeblk.c
index e8e72986f0d6..4e90c1f837c3 100644
--- a/drivers/acpi/events/evgpeblk.c
+++ b/drivers/acpi/events/evgpeblk.c
@@ -131,7 +131,7 @@ u8 acpi_ev_valid_gpe_event(struct acpi_gpe_event_info *gpe_event_info)
131 * 131 *
132 ******************************************************************************/ 132 ******************************************************************************/
133 133
134acpi_status acpi_ev_walk_gpe_list(ACPI_GPE_CALLBACK gpe_walk_callback) 134acpi_status acpi_ev_walk_gpe_list(acpi_gpe_callback gpe_walk_callback)
135{ 135{
136 struct acpi_gpe_block_info *gpe_block; 136 struct acpi_gpe_block_info *gpe_block;
137 struct acpi_gpe_xrupt_info *gpe_xrupt_info; 137 struct acpi_gpe_xrupt_info *gpe_xrupt_info;
diff --git a/drivers/acpi/events/evmisc.c b/drivers/acpi/events/evmisc.c
index 334407239f2f..b216b3229e27 100644
--- a/drivers/acpi/events/evmisc.c
+++ b/drivers/acpi/events/evmisc.c
@@ -185,7 +185,8 @@ acpi_ev_queue_notify_request(struct acpi_namespace_node * node,
185 return (AE_NO_MEMORY); 185 return (AE_NO_MEMORY);
186 } 186 }
187 187
188 notify_info->common.data_type = ACPI_DESC_TYPE_STATE_NOTIFY; 188 notify_info->common.descriptor_type =
189 ACPI_DESC_TYPE_STATE_NOTIFY;
189 notify_info->notify.node = node; 190 notify_info->notify.node = node;
190 notify_info->notify.value = (u16) notify_value; 191 notify_info->notify.value = (u16) notify_value;
191 notify_info->notify.handler_obj = handler_obj; 192 notify_info->notify.handler_obj = handler_obj;
diff --git a/drivers/acpi/events/evregion.c b/drivers/acpi/events/evregion.c
index 2b900ef05fa9..0337ad222b26 100644
--- a/drivers/acpi/events/evregion.c
+++ b/drivers/acpi/events/evregion.c
@@ -250,7 +250,6 @@ acpi_ev_execute_reg_method(union acpi_operand_object *region_obj, u32 function)
250 250
251 cleanup: 251 cleanup:
252 acpi_ut_remove_reference(params[0]); 252 acpi_ut_remove_reference(params[0]);
253
254 return_ACPI_STATUS(status); 253 return_ACPI_STATUS(status);
255} 254}
256 255
@@ -389,9 +388,8 @@ acpi_ev_address_space_dispatch(union acpi_operand_object *region_obj,
389 acpi_ut_get_region_name(region_obj->region. 388 acpi_ut_get_region_name(region_obj->region.
390 space_id))); 389 space_id)));
391 390
392 if (! 391 if (!(handler_desc->address_space.handler_flags &
393 (handler_desc->address_space. 392 ACPI_ADDR_HANDLER_DEFAULT_INSTALLED)) {
394 hflags & ACPI_ADDR_HANDLER_DEFAULT_INSTALLED)) {
395 /* 393 /*
396 * For handlers other than the default (supplied) handlers, we must 394 * For handlers other than the default (supplied) handlers, we must
397 * exit the interpreter because the handler *might* block -- we don't 395 * exit the interpreter because the handler *might* block -- we don't
@@ -412,9 +410,8 @@ acpi_ev_address_space_dispatch(union acpi_operand_object *region_obj,
412 space_id))); 410 space_id)));
413 } 411 }
414 412
415 if (! 413 if (!(handler_desc->address_space.handler_flags &
416 (handler_desc->address_space. 414 ACPI_ADDR_HANDLER_DEFAULT_INSTALLED)) {
417 hflags & ACPI_ADDR_HANDLER_DEFAULT_INSTALLED)) {
418 /* 415 /*
419 * We just returned from a non-default handler, we must re-enter the 416 * We just returned from a non-default handler, we must re-enter the
420 * interpreter 417 * interpreter
@@ -772,7 +769,7 @@ acpi_ev_install_space_handler(struct acpi_namespace_node * node,
772 union acpi_operand_object *handler_obj; 769 union acpi_operand_object *handler_obj;
773 acpi_status status; 770 acpi_status status;
774 acpi_object_type type; 771 acpi_object_type type;
775 u16 flags = 0; 772 u8 flags = 0;
776 773
777 ACPI_FUNCTION_TRACE("ev_install_space_handler"); 774 ACPI_FUNCTION_TRACE("ev_install_space_handler");
778 775
@@ -930,7 +927,7 @@ acpi_ev_install_space_handler(struct acpi_namespace_node * node,
930 /* Init handler obj */ 927 /* Init handler obj */
931 928
932 handler_obj->address_space.space_id = (u8) space_id; 929 handler_obj->address_space.space_id = (u8) space_id;
933 handler_obj->address_space.hflags = flags; 930 handler_obj->address_space.handler_flags = flags;
934 handler_obj->address_space.region_list = NULL; 931 handler_obj->address_space.region_list = NULL;
935 handler_obj->address_space.node = node; 932 handler_obj->address_space.node = node;
936 handler_obj->address_space.handler = handler; 933 handler_obj->address_space.handler = handler;