ACPI: create ACPI notifier chain
Subsystems (2)
PATCH 3/4 ACPI: create ACPI notifier chain
From: Zhang Rui <[email protected]>
This patch is needed by the kernel mode graphics drivers. Create an ACPI notifier chain so that they can get notified upon hotkey events.
--- drivers/acpi/event.c | 28 ++++++++++++++++++++++++++++ include/acpi/acpi_bus.h | 3 +++ 2 files changed, 31 insertions(+)
drivers/acpi/event.c +28 -0
@@ -109,6 +109,34 @@ static const struct file_operations acpi };#endif /* CONFIG_ACPI_PROC_EVENT */ +/* ACPI notifier chain */ +BLOCKING_NOTIFIER_HEAD (acpi_chain_head); + +int acpi_notifier_call_chain (struct acpi_device *dev,u32 type,u32 data) +{ +struct acpi_bus_event event; + +strcpy (event.device_class, dev->pnp.device_class); +strcpy (event.bus_id, dev->pnp.bus_id); + event.type = type; + event.data = data; +return (blocking_notifier_call_chain (&acpi_chain_head,0 , (void *)&event) + ==NOTIFY_BAD ) ? -EINVAL :0 ; +} +EXPORT_SYMBOL (acpi_notifier_call_chain); + +int register_acpi_notifier (struct notifier_block *nb) +{ +return blocking_notifier_chain_register (&acpi_chain_head, nb); +} +EXPORT_SYMBOL (register_acpi_notifier); + +int unregister_acpi_notifier (struct notifier_block *nb) +{ +return blocking_notifier_chain_unregister (&acpi_chain_head, nb); +} +EXPORT_SYMBOL (unregister_acpi_notifier); +#ifdef CONFIG_NET static unsigned int acpi_event_seqnum; struct acpi_genl_event {
include/acpi/acpi_bus.h +3 -0
@@ -320,6 +320,9 @@ struct acpi_bus_event {extern struct kset acpi_subsys;extern int acpi_bus_generate_netlink_event (const char *,const char *,u8 ,int ); +extern int acpi_notifier_call_chain (struct acpi_device *,u32 ,u32 ); +extern int register_acpi_notifier (struct notifier_block *); +extern int unregister_acpi_notifier (struct notifier_block *);/* * External Functions */
Applied.
thanks,
-Len
Quoted 72 lines · Zhang Rui
From: Zhang Rui <[email protected]>
This patch is needed by the kernel mode graphics drivers. Create an ACPI notifier chain so that they can get notified upon hotkey events.
Signed-off-by Zhang Rui <[email protected]>--- drivers/acpi/event.c | 28 ++++++++++++++++++++++++++++ include/acpi/acpi_bus.h | 3 +++ 2 files changed, 31 insertions(+)Index:
linux-2.6/drivers/acpi/event.c
===================================================================drivers/acpi/event.c +28
-0@@ -109,6 +109,34 @@ static const struct file_operations acpi };#endif /* CONFIG_ACPI_PROC_EVENT */ +/* ACPI notifier chain */ +BLOCKING_NOTIFIER_HEAD (acpi_chain_head); + +int acpi_notifier_call_chain (struct acpi_device *dev,u32 type,u32 data) +{ +struct acpi_bus_event event; + +strcpy (event.device_class, dev->pnp.device_class); +strcpy (event.bus_id, dev->pnp.bus_id); + event.type = type; + event.data = data; +return (blocking_notifier_call_chain (&acpi_chain_head,0 , (void *)&event) + ==NOTIFY_BAD ) ? -EINVAL :0 ; +} +EXPORT_SYMBOL (acpi_notifier_call_chain); + +int register_acpi_notifier (struct notifier_block *nb) +{ +return blocking_notifier_chain_register (&acpi_chain_head, nb); +} +EXPORT_SYMBOL (register_acpi_notifier); + +int unregister_acpi_notifier (struct notifier_block *nb) +{ +return blocking_notifier_chain_unregister (&acpi_chain_head, nb); +} +EXPORT_SYMBOL (unregister_acpi_notifier); +#ifdef CONFIG_NET static unsigned int acpi_event_seqnum; struct acpi_genl_event {Index:
linux-2.6/include/acpi/acpi_bus.h
===================================================================include/acpi/acpi_bus.h +3
-1@@ -320,6 +320,9 @@ struct acpi_bus_event {extern struct kset acpi_subsys;extern int acpi_bus_generate_netlink_event (const char *,const char *,u8 ,int ); +extern int acpi_notifier_call_chain (struct acpi_device *,u32 ,u32 ); +extern int register_acpi_notifier (struct notifier_block *); +extern int unregister_acpi_notifier (struct notifier_block *);/* * External Functions */ -To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html