aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/workqueue.h
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2010-06-29 04:07:14 -0400
committerTejun Heo <tj@kernel.org>2010-06-29 04:07:14 -0400
commit649027d73a6309ac34dc2886362e662bd73456dc (patch)
tree4faf07773683ff5ec2b120d9070dbbb590199057 /include/linux/workqueue.h
parentdcd989cb73ab0f7b722d64ab6516f101d9f43f88 (diff)
workqueue: implement high priority workqueue
This patch implements high priority workqueue which can be specified with WQ_HIGHPRI flag on creation. A high priority workqueue has the following properties. * A work queued to it is queued at the head of the worklist of the respective gcwq after other highpri works, while normal works are always appended at the end. * As long as there are highpri works on gcwq->worklist, [__]need_more_worker() remains %true and process_one_work() wakes up another worker before it start executing a work. The above two properties guarantee that works queued to high priority workqueues are dispatched to workers and start execution as soon as possible regardless of the state of other works. Signed-off-by: Tejun Heo <tj@kernel.org> Cc: Andi Kleen <andi@firstfloor.org> Cc: Andrew Morton <akpm@linux-foundation.org>
Diffstat (limited to 'include/linux/workqueue.h')
-rw-r--r--include/linux/workqueue.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/include/linux/workqueue.h b/include/linux/workqueue.h
index 0a7f79729380..006dcf7e808a 100644
--- a/include/linux/workqueue.h
+++ b/include/linux/workqueue.h
@@ -231,6 +231,7 @@ enum {
231 WQ_SINGLE_CPU = 1 << 1, /* only single cpu at a time */ 231 WQ_SINGLE_CPU = 1 << 1, /* only single cpu at a time */
232 WQ_NON_REENTRANT = 1 << 2, /* guarantee non-reentrance */ 232 WQ_NON_REENTRANT = 1 << 2, /* guarantee non-reentrance */
233 WQ_RESCUER = 1 << 3, /* has an rescue worker */ 233 WQ_RESCUER = 1 << 3, /* has an rescue worker */
234 WQ_HIGHPRI = 1 << 4, /* high priority */
234 235
235 WQ_MAX_ACTIVE = 512, /* I like 512, better ideas? */ 236 WQ_MAX_ACTIVE = 512, /* I like 512, better ideas? */
236 WQ_DFL_ACTIVE = WQ_MAX_ACTIVE / 2, 237 WQ_DFL_ACTIVE = WQ_MAX_ACTIVE / 2,