Loading drivers/acpi/osl.c +13 −21 Original line number Original line Diff line number Diff line Loading @@ -73,6 +73,7 @@ static unsigned int acpi_irq_irq; static acpi_osd_handler acpi_irq_handler; static acpi_osd_handler acpi_irq_handler; static void *acpi_irq_context; static void *acpi_irq_context; static struct workqueue_struct *kacpid_wq; static struct workqueue_struct *kacpid_wq; static struct workqueue_struct *kacpi_notify_wq; acpi_status acpi_os_initialize(void) acpi_status acpi_os_initialize(void) { { Loading @@ -91,8 +92,9 @@ acpi_status acpi_os_initialize1(void) return AE_NULL_ENTRY; return AE_NULL_ENTRY; } } kacpid_wq = create_singlethread_workqueue("kacpid"); kacpid_wq = create_singlethread_workqueue("kacpid"); kacpi_notify_wq = create_singlethread_workqueue("kacpi_notify"); BUG_ON(!kacpid_wq); BUG_ON(!kacpid_wq); BUG_ON(!kacpi_notify_wq); return AE_OK; return AE_OK; } } Loading @@ -104,6 +106,7 @@ acpi_status acpi_os_terminate(void) } } destroy_workqueue(kacpid_wq); destroy_workqueue(kacpid_wq); destroy_workqueue(kacpi_notify_wq); return AE_OK; return AE_OK; } } Loading Loading @@ -566,10 +569,7 @@ void acpi_os_derive_pci_id(acpi_handle rhandle, /* upper bound */ static void acpi_os_execute_deferred(void *context) static void acpi_os_execute_deferred(void *context) { { struct acpi_os_dpc *dpc = NULL; struct acpi_os_dpc *dpc = (struct acpi_os_dpc *)context; dpc = (struct acpi_os_dpc *)context; if (!dpc) { if (!dpc) { printk(KERN_ERR PREFIX "Invalid (NULL) context\n"); printk(KERN_ERR PREFIX "Invalid (NULL) context\n"); return; return; Loading Loading @@ -604,14 +604,12 @@ acpi_status acpi_os_execute(acpi_execute_type type, struct acpi_os_dpc *dpc; struct acpi_os_dpc *dpc; struct work_struct *task; struct work_struct *task; ACPI_FUNCTION_TRACE("os_queue_for_execution"); ACPI_DEBUG_PRINT((ACPI_DB_EXEC, ACPI_DEBUG_PRINT((ACPI_DB_EXEC, "Scheduling function [%p(%p)] for deferred execution.\n", "Scheduling function [%p(%p)] for deferred execution.\n", function, context)); function, context)); if (!function) if (!function) return_ACPI_STATUS(AE_BAD_PARAMETER); return AE_BAD_PARAMETER; /* /* * Allocate/initialize DPC structure. Note that this memory will be * Allocate/initialize DPC structure. Note that this memory will be Loading @@ -624,26 +622,20 @@ acpi_status acpi_os_execute(acpi_execute_type type, * from the same memory. * from the same memory. */ */ dpc = dpc = kmalloc(sizeof(struct acpi_os_dpc) + kmalloc(sizeof(struct acpi_os_dpc) + sizeof(struct work_struct), sizeof(struct work_struct), GFP_ATOMIC); GFP_ATOMIC); if (!dpc) if (!dpc) return_ACPI_STATUS(AE_NO_MEMORY); return AE_NO_MEMORY; dpc->function = function; dpc->function = function; dpc->context = context; dpc->context = context; task = (void *)(dpc + 1); task = (void *)(dpc + 1); INIT_WORK(task, acpi_os_execute_deferred, (void *)dpc); INIT_WORK(task, acpi_os_execute_deferred, (void *)dpc); if (!queue_work((type == OSL_NOTIFY_HANDLER)? if (!queue_work(kacpid_wq, task)) { kacpi_notify_wq : kacpid_wq, task)) { ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Call to queue_work() failed.\n")); kfree(dpc); status = AE_ERROR; status = AE_ERROR; kfree(dpc); } } return status; return_ACPI_STATUS(status); } } EXPORT_SYMBOL(acpi_os_execute); EXPORT_SYMBOL(acpi_os_execute); Loading Loading
drivers/acpi/osl.c +13 −21 Original line number Original line Diff line number Diff line Loading @@ -73,6 +73,7 @@ static unsigned int acpi_irq_irq; static acpi_osd_handler acpi_irq_handler; static acpi_osd_handler acpi_irq_handler; static void *acpi_irq_context; static void *acpi_irq_context; static struct workqueue_struct *kacpid_wq; static struct workqueue_struct *kacpid_wq; static struct workqueue_struct *kacpi_notify_wq; acpi_status acpi_os_initialize(void) acpi_status acpi_os_initialize(void) { { Loading @@ -91,8 +92,9 @@ acpi_status acpi_os_initialize1(void) return AE_NULL_ENTRY; return AE_NULL_ENTRY; } } kacpid_wq = create_singlethread_workqueue("kacpid"); kacpid_wq = create_singlethread_workqueue("kacpid"); kacpi_notify_wq = create_singlethread_workqueue("kacpi_notify"); BUG_ON(!kacpid_wq); BUG_ON(!kacpid_wq); BUG_ON(!kacpi_notify_wq); return AE_OK; return AE_OK; } } Loading @@ -104,6 +106,7 @@ acpi_status acpi_os_terminate(void) } } destroy_workqueue(kacpid_wq); destroy_workqueue(kacpid_wq); destroy_workqueue(kacpi_notify_wq); return AE_OK; return AE_OK; } } Loading Loading @@ -566,10 +569,7 @@ void acpi_os_derive_pci_id(acpi_handle rhandle, /* upper bound */ static void acpi_os_execute_deferred(void *context) static void acpi_os_execute_deferred(void *context) { { struct acpi_os_dpc *dpc = NULL; struct acpi_os_dpc *dpc = (struct acpi_os_dpc *)context; dpc = (struct acpi_os_dpc *)context; if (!dpc) { if (!dpc) { printk(KERN_ERR PREFIX "Invalid (NULL) context\n"); printk(KERN_ERR PREFIX "Invalid (NULL) context\n"); return; return; Loading Loading @@ -604,14 +604,12 @@ acpi_status acpi_os_execute(acpi_execute_type type, struct acpi_os_dpc *dpc; struct acpi_os_dpc *dpc; struct work_struct *task; struct work_struct *task; ACPI_FUNCTION_TRACE("os_queue_for_execution"); ACPI_DEBUG_PRINT((ACPI_DB_EXEC, ACPI_DEBUG_PRINT((ACPI_DB_EXEC, "Scheduling function [%p(%p)] for deferred execution.\n", "Scheduling function [%p(%p)] for deferred execution.\n", function, context)); function, context)); if (!function) if (!function) return_ACPI_STATUS(AE_BAD_PARAMETER); return AE_BAD_PARAMETER; /* /* * Allocate/initialize DPC structure. Note that this memory will be * Allocate/initialize DPC structure. Note that this memory will be Loading @@ -624,26 +622,20 @@ acpi_status acpi_os_execute(acpi_execute_type type, * from the same memory. * from the same memory. */ */ dpc = dpc = kmalloc(sizeof(struct acpi_os_dpc) + kmalloc(sizeof(struct acpi_os_dpc) + sizeof(struct work_struct), sizeof(struct work_struct), GFP_ATOMIC); GFP_ATOMIC); if (!dpc) if (!dpc) return_ACPI_STATUS(AE_NO_MEMORY); return AE_NO_MEMORY; dpc->function = function; dpc->function = function; dpc->context = context; dpc->context = context; task = (void *)(dpc + 1); task = (void *)(dpc + 1); INIT_WORK(task, acpi_os_execute_deferred, (void *)dpc); INIT_WORK(task, acpi_os_execute_deferred, (void *)dpc); if (!queue_work((type == OSL_NOTIFY_HANDLER)? if (!queue_work(kacpid_wq, task)) { kacpi_notify_wq : kacpid_wq, task)) { ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Call to queue_work() failed.\n")); kfree(dpc); status = AE_ERROR; status = AE_ERROR; kfree(dpc); } } return status; return_ACPI_STATUS(status); } } EXPORT_SYMBOL(acpi_os_execute); EXPORT_SYMBOL(acpi_os_execute); Loading