diff options
author | Bob Moore <robert.moore@intel.com> | 2012-05-03 03:08:19 (GMT) |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2012-06-01 15:51:50 (GMT) |
commit | 86ed4bc83abf530cf2019044b74f89a39dfd6425 (patch) | |
tree | 7cd21414f6121486079be2ca9cb9ff0a7722e01b /drivers/acpi/acpica/acobject.h | |
parent | 5134abfcfb4a8a9ef42c82dabad05762fbf04376 (diff) | |
download | linux-86ed4bc83abf530cf2019044b74f89a39dfd6425.tar.xz |
ACPICA: Add support for multiple notify handlers
This change adds support to allow multiple notify handlers on
Device, ThermalZone, and Processor objects. Also re-worked
and restructured the entire notify support code for handler
installation, handler removal, notify event queuing, and notify
dispatch to handler.
Extends and updates original commit 3f0be67("ACPI / ACPICA: Multiple
system notify handlers per device") by Rafael Wysocki.
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Lin Ming <ming.m.lin@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers/acpi/acpica/acobject.h')
-rw-r--r-- | drivers/acpi/acpica/acobject.h | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/drivers/acpi/acpica/acobject.h b/drivers/acpi/acpica/acobject.h index c065078..39a2b84 100644 --- a/drivers/acpi/acpica/acobject.h +++ b/drivers/acpi/acpica/acobject.h @@ -206,8 +206,7 @@ struct acpi_object_method { * Common fields for objects that support ASL notifications */ #define ACPI_COMMON_NOTIFY_INFO \ - union acpi_operand_object *system_notify; /* Handler for system notifies */\ - union acpi_operand_object *device_notify; /* Handler for driver notifies */\ + union acpi_operand_object *notify_list[2]; /* Handlers for system/device notifies */\ union acpi_operand_object *handler; /* Handler for Address space */ struct acpi_object_notify_common { /* COMMON NOTIFY for POWER, PROCESSOR, DEVICE, and THERMAL */ @@ -296,10 +295,10 @@ struct acpi_object_buffer_field { struct acpi_object_notify_handler { ACPI_OBJECT_COMMON_HEADER struct acpi_namespace_node *node; /* Parent device */ - u32 handler_type; - acpi_notify_handler handler; + u32 handler_type; /* Type: Device/System/Both */ + acpi_notify_handler handler; /* Handler address */ void *context; - struct acpi_object_notify_handler *next; + union acpi_operand_object *next[2]; /* Device and System handler lists */ }; struct acpi_object_addr_handler { |