linux/drivers/edac/wq.c
<<
>>
Prefs
   1#include "edac_module.h"
   2
   3static struct workqueue_struct *wq;
   4
   5bool edac_queue_work(struct delayed_work *work, unsigned long delay)
   6{
   7        return queue_delayed_work(wq, work, delay);
   8}
   9EXPORT_SYMBOL_GPL(edac_queue_work);
  10
  11bool edac_mod_work(struct delayed_work *work, unsigned long delay)
  12{
  13        return mod_delayed_work(wq, work, delay);
  14}
  15EXPORT_SYMBOL_GPL(edac_mod_work);
  16
  17bool edac_stop_work(struct delayed_work *work)
  18{
  19        bool ret;
  20
  21        ret = cancel_delayed_work_sync(work);
  22        flush_workqueue(wq);
  23
  24        return ret;
  25}
  26EXPORT_SYMBOL_GPL(edac_stop_work);
  27
  28int edac_workqueue_setup(void)
  29{
  30        wq = alloc_ordered_workqueue("edac-poller", WQ_MEM_RECLAIM);
  31        if (!wq)
  32                return -ENODEV;
  33        else
  34                return 0;
  35}
  36
  37void edac_workqueue_teardown(void)
  38{
  39        flush_workqueue(wq);
  40        destroy_workqueue(wq);
  41        wq = NULL;
  42}
  43