|
@@ -323,6 +323,7 @@ enum {
|
|
|
|
|
|
|
|
__WQ_DRAINING = 1 << 16, /* internal: workqueue is draining */
|
|
__WQ_DRAINING = 1 << 16, /* internal: workqueue is draining */
|
|
|
__WQ_ORDERED = 1 << 17, /* internal: workqueue is ordered */
|
|
__WQ_ORDERED = 1 << 17, /* internal: workqueue is ordered */
|
|
|
|
|
+ __WQ_ORDERED_EXPLICIT = 1 << 18, /* internal: alloc_ordered_workqueue() */
|
|
|
__WQ_LEGACY = 1 << 18, /* internal: create*_workqueue() */
|
|
__WQ_LEGACY = 1 << 18, /* internal: create*_workqueue() */
|
|
|
|
|
|
|
|
WQ_MAX_ACTIVE = 512, /* I like 512, better ideas? */
|
|
WQ_MAX_ACTIVE = 512, /* I like 512, better ideas? */
|
|
@@ -422,7 +423,8 @@ __alloc_workqueue_key(const char *fmt, unsigned int flags, int max_active,
|
|
|
* Pointer to the allocated workqueue on success, %NULL on failure.
|
|
* Pointer to the allocated workqueue on success, %NULL on failure.
|
|
|
*/
|
|
*/
|
|
|
#define alloc_ordered_workqueue(fmt, flags, args...) \
|
|
#define alloc_ordered_workqueue(fmt, flags, args...) \
|
|
|
- alloc_workqueue(fmt, WQ_UNBOUND | __WQ_ORDERED | (flags), 1, ##args)
|
|
|
|
|
|
|
+ alloc_workqueue(fmt, WQ_UNBOUND | __WQ_ORDERED | \
|
|
|
|
|
+ __WQ_ORDERED_EXPLICIT | (flags), 1, ##args)
|
|
|
|
|
|
|
|
#define create_workqueue(name) \
|
|
#define create_workqueue(name) \
|
|
|
alloc_workqueue("%s", __WQ_LEGACY | WQ_MEM_RECLAIM, 1, (name))
|
|
alloc_workqueue("%s", __WQ_LEGACY | WQ_MEM_RECLAIM, 1, (name))
|