root/drivers/edac/wq.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. edac_queue_work
  2. edac_mod_work
  3. edac_stop_work
  4. edac_workqueue_setup
  5. edac_workqueue_teardown

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

/* [<][>][^][v][top][bottom][index][help] */