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