diff options
author | Tejun Heo <tj@kernel.org> | 2010-06-29 04:07:14 -0400 |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2010-06-29 04:07:14 -0400 |
commit | 649027d73a6309ac34dc2886362e662bd73456dc (patch) | |
tree | 4faf07773683ff5ec2b120d9070dbbb590199057 /include/linux/workqueue.h | |
parent | dcd989cb73ab0f7b722d64ab6516f101d9f43f88 (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.h | 1 |
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, |