#ifndef __BACKPORT_LINUX_WORKQUEUE_H #define __BACKPORT_LINUX_WORKQUEUE_H #include_next #include #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 * 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 */