static unsigned int acpi_irq_irq;
static OSD_HANDLER acpi_irq_handler;
static void *acpi_irq_context;
+static struct workqueue_struct *kacpid_wq;
acpi_status
acpi_os_initialize(void)
return AE_NULL_ENTRY;
}
#endif
+ kacpid_wq = create_singlethread_workqueue("kacpid");
+ BUG_ON(!kacpid_wq);
return AE_OK;
}
acpi_irq_handler);
}
+ destroy_workqueue(kacpid_wq);
+
return AE_OK;
}
task = (void *)(dpc+1);
INIT_WORK(task, acpi_os_execute_deferred, (void*)dpc);
- if (!schedule_work(task)) {
- ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Call to schedule_work() failed.\n"));
+ if (!queue_work(kacpid_wq, task)) {
+ ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Call to queue_work() failed.\n"));
kfree(dpc);
status = AE_ERROR;
}
return_ACPI_STATUS (status);
}
+void
+acpi_os_wait_events_complete(
+ void *context)
+{
+ flush_workqueue(kacpid_wq);
+}
+
/*
* Allocate the memory for a spinlock and initialize it.
*/