Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=8db85d4c9a0cc131242c80ef8456362d66561dc2
Commit:     8db85d4c9a0cc131242c80ef8456362d66561dc2
Parent:     3e58ea0d31659b22ba5753f7abf3d7db346eab81
Author:     Alexey Starikovskiy <[EMAIL PROTECTED]>
AuthorDate: Wed Sep 26 19:43:16 2007 +0400
Committer:  Len Brown <[EMAIL PROTECTED]>
CommitDate: Thu Sep 27 15:50:22 2007 -0400

    ACPI: Add acpi_bus_generate_event4() function
    
    acpi_bus_generate_event() takes two strings out of passed device object.
    SBS needs to supply these strings directly.
    
    Signed-off-by: Alexey Starikovskiy <[EMAIL PROTECTED]>
    Signed-off-by: Len Brown <[EMAIL PROTECTED]>
---
 drivers/acpi/bus.c      |   23 +++++++++++++++--------
 drivers/acpi/sbs.c      |   46 ++++++++++++++--------------------------------
 include/acpi/acpi_bus.h |    1 +
 3 files changed, 30 insertions(+), 40 deletions(-)

diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c
index 9ba778a..a54234d 100644
--- a/drivers/acpi/bus.c
+++ b/drivers/acpi/bus.c
@@ -284,15 +284,11 @@ DECLARE_WAIT_QUEUE_HEAD(acpi_bus_event_queue);
 
 extern int event_is_open;
 
-int acpi_bus_generate_proc_event(struct acpi_device *device, u8 type, int data)
+int acpi_bus_generate_proc_event4(const char *device_class, const char 
*bus_id, u8 type, int data)
 {
-       struct acpi_bus_event *event = NULL;
+       struct acpi_bus_event *event;
        unsigned long flags = 0;
 
-
-       if (!device)
-               return -EINVAL;
-
        /* drop event on the floor if no one's listening */
        if (!event_is_open)
                return 0;
@@ -301,8 +297,8 @@ int acpi_bus_generate_proc_event(struct acpi_device 
*device, u8 type, int data)
        if (!event)
                return -ENOMEM;
 
-       strcpy(event->device_class, device->pnp.device_class);
-       strcpy(event->bus_id, device->pnp.bus_id);
+       strcpy(event->device_class, device_class);
+       strcpy(event->bus_id, bus_id);
        event->type = type;
        event->data = data;
 
@@ -313,6 +309,17 @@ int acpi_bus_generate_proc_event(struct acpi_device 
*device, u8 type, int data)
        wake_up_interruptible(&acpi_bus_event_queue);
 
        return 0;
+
+}
+
+EXPORT_SYMBOL_GPL(acpi_bus_generate_proc_event4);
+
+int acpi_bus_generate_proc_event(struct acpi_device *device, u8 type, int data)
+{
+       if (!device)
+               return -EINVAL;
+       return acpi_bus_generate_proc_event4(device->pnp.device_class,
+                                            device->pnp.bus_id, type, data);
 }
 
 EXPORT_SYMBOL(acpi_bus_generate_proc_event);
diff --git a/drivers/acpi/sbs.c b/drivers/acpi/sbs.c
index a578986..33ba4bf 100644
--- a/drivers/acpi/sbs.c
+++ b/drivers/acpi/sbs.c
@@ -427,28 +427,6 @@ static int acpi_check_update_proc(struct acpi_sbs *sbs)
        return 0;
 }
 
-static int acpi_sbs_generate_event(struct acpi_device *device,
-                                  int event, int state, char *bid, char *class)
-{
-       char bid_saved[5];
-       char class_saved[20];
-       int result = 0;
-
-       strcpy(bid_saved, acpi_device_bid(device));
-       strcpy(class_saved, acpi_device_class(device));
-
-       strcpy(acpi_device_bid(device), bid);
-       strcpy(acpi_device_class(device), class);
-
-       result = acpi_bus_generate_proc_event(device, event, state);
-
-       strcpy(acpi_device_bid(device), bid_saved);
-       strcpy(acpi_device_class(device), class_saved);
-
-       acpi_bus_generate_netlink_event(class, bid, event, state);
-       return result;
-}
-
 static int acpi_battery_get_present(struct acpi_battery *battery)
 {
        s16 state;
@@ -1452,15 +1430,17 @@ static int acpi_sbs_update_run(struct acpi_sbs *sbs, 
int id, int data_type)
        }
 
        if (do_ac_init) {
-               result = acpi_sbs_generate_event(sbs->device,
-                                                ACPI_SBS_AC_NOTIFY_STATUS,
-                                                new_ac_present,
+               result = acpi_bus_generate_proc_event4(ACPI_AC_CLASS,
                                                 ACPI_AC_DIR_NAME,
-                                                ACPI_AC_CLASS);
+                                                ACPI_SBS_AC_NOTIFY_STATUS,
+                                                new_ac_present);
                if (result) {
                        ACPI_EXCEPTION((AE_INFO, AE_ERROR,
-                                       "acpi_sbs_generate_event() failed"));
+                                       "acpi_bus_generate_event4() failed"));
                }
+               acpi_bus_generate_netlink_event(ACPI_AC_CLASS, ACPI_AC_DIR_NAME,
+                                               ACPI_SBS_AC_NOTIFY_STATUS,
+                                               new_ac_present);
        }
 
        if (data_type == DATA_TYPE_COMMON) {
@@ -1568,14 +1548,16 @@ static int acpi_sbs_update_run(struct acpi_sbs *sbs, 
int id, int data_type)
                    old_remaining_capacity !=
                    battery->state.remaining_capacity) {
                        sprintf(dir_name, ACPI_BATTERY_DIR_NAME, id);
-                       result = acpi_sbs_generate_event(sbs->device,
-                                                        
ACPI_SBS_BATTERY_NOTIFY_STATUS,
-                                                        new_battery_present,
+                       result = 
acpi_bus_generate_proc_event4(ACPI_BATTERY_CLASS,
                                                         dir_name,
-                                                        ACPI_BATTERY_CLASS);
+                                                        
ACPI_SBS_BATTERY_NOTIFY_STATUS,
+                                                        new_battery_present);
+                       acpi_bus_generate_netlink_event(ACPI_BATTERY_CLASS, 
dir_name,
+                                                       
ACPI_SBS_BATTERY_NOTIFY_STATUS,
+                                                       new_battery_present);
                        if (result) {
                                ACPI_EXCEPTION((AE_INFO, AE_ERROR,
-                                               "acpi_sbs_generate_event() "
+                                               
"acpi_bus_generate_proc_event4() "
                                                "failed"));
                        }
                }
diff --git a/include/acpi/acpi_bus.h b/include/acpi/acpi_bus.h
index 86aea44..8a388e7 100644
--- a/include/acpi/acpi_bus.h
+++ b/include/acpi/acpi_bus.h
@@ -333,6 +333,7 @@ int acpi_bus_get_power(acpi_handle handle, int *state);
 int acpi_bus_set_power(acpi_handle handle, int state);
 #ifdef CONFIG_ACPI_PROC_EVENT
 int acpi_bus_generate_proc_event(struct acpi_device *device, u8 type, int 
data);
+int acpi_bus_generate_proc_event4(const char *class, const char *bid, u8 type, 
int data);
 int acpi_bus_receive_event(struct acpi_bus_event *event);
 #else
 static inline int acpi_bus_generate_proc_event(struct acpi_device *device, u8 
type, int data)
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to