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