| #ifndef __BACKPORT_LINUX_WORKQUEUE_H |
| #define __BACKPORT_LINUX_WORKQUEUE_H |
| #include_next <linux/workqueue.h> |
| #include <linux/version.h> |
| |
| #if LINUX_VERSION_IS_LESS(3,7,0) |
| #define mod_delayed_work LINUX_BACKPORT(mod_delayed_work) |
| bool mod_delayed_work(struct workqueue_struct *wq, struct delayed_work *dwork, |
| unsigned long delay); |
| #endif |
| |
| #ifndef create_freezable_workqueue |
| /* note freez_a_ble -> freez_ea_able */ |
| #define create_freezable_workqueue create_freezeable_workqueue |
| #endif |
| |
| #if LINUX_VERSION_IS_LESS(3,3,0) |
| #define __WQ_ORDERED 0 |
| /* |
| * commit b196be89cdc14a88cc637cdad845a75c5886c82d |
| * Author: Tejun Heo <tj@kernel.org> |
| * Date: Tue Jan 10 15:11:35 2012 -0800 |
| * |
| * workqueue: make alloc_workqueue() take printf fmt and args for name |
| */ |
| struct workqueue_struct * |
| backport_alloc_workqueue(const char *fmt, unsigned int flags, |
| int max_active, struct lock_class_key *key, |
| const char *lock_name, ...); |
| #undef alloc_workqueue |
| #ifdef CONFIG_LOCKDEP |
| #define alloc_workqueue(fmt, flags, max_active, args...) \ |
| ({ \ |
| static struct lock_class_key __key; \ |
| const char *__lock_name; \ |
| \ |
| if (__builtin_constant_p(fmt)) \ |
| __lock_name = (fmt); \ |
| else \ |
| __lock_name = #fmt; \ |
| \ |
| backport_alloc_workqueue((fmt), (flags), (max_active), \ |
| &__key, __lock_name, ##args); \ |
| }) |
| #else |
| #define alloc_workqueue(fmt, flags, max_active, args...) \ |
| backport_alloc_workqueue((fmt), (flags), (max_active), \ |
| NULL, NULL, ##args) |
| #endif |
| #undef alloc_ordered_workqueue |
| #define alloc_ordered_workqueue(fmt, flags, args...) \ |
| alloc_workqueue(fmt, WQ_UNBOUND | __WQ_ORDERED | (flags), 1, ##args) |
| #define destroy_workqueue backport_destroy_workqueue |
| void backport_destroy_workqueue(struct workqueue_struct *wq); |
| #endif |
| |
| #if LINUX_VERSION_IS_LESS(3,11,0) |
| /* power efficient workqueues were added in commit 0668106ca386. */ |
| #define system_power_efficient_wq system_wq |
| #define system_freezable_power_efficient_wq system_freezable_wq |
| #endif |
| |
| #if LINUX_VERSION_IS_LESS(3,1,0) |
| #define drain_workqueue(wq) flush_workqueue(wq) |
| #endif |
| |
| #endif /* __BACKPORT_LINUX_WORKQUEUE_H */ |