blob: ab68d21725ef3532eebfec1e924d81cddefe809d [file] [log] [blame]
#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 */