summaryrefslogtreecommitdiff
path: root/kernel/workqueue.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@ppc970.osdl.org>2004-08-23 00:37:07 -0700
committerLinus Torvalds <torvalds@ppc970.osdl.org>2004-08-23 00:37:07 -0700
commitaea40b2905d269b11a7382d84e9cb0f4c067922e (patch)
tree3cf16968659fa6a43a2b5e28ece06dc305d320b2 /kernel/workqueue.c
parent01a17cfd0ccd0bea05f4000f4560807507fbed84 (diff)
parent9c9dada1d5cfd06f06b00ef84ef01839b9ac65ed (diff)
Merge bk://linux-ntfs.bkbits.net/ntfs-2.6
into ppc970.osdl.org:/home/torvalds/v2.6/linux
Diffstat (limited to 'kernel/workqueue.c')
-rw-r--r--kernel/workqueue.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/kernel/workqueue.c b/kernel/workqueue.c
index 987fbc2986d8..3f559661ee19 100644
--- a/kernel/workqueue.c
+++ b/kernel/workqueue.c
@@ -398,6 +398,26 @@ int fastcall schedule_delayed_work(struct work_struct *work, unsigned long delay
return queue_delayed_work(keventd_wq, work, delay);
}
+int schedule_delayed_work_on(int cpu,
+ struct work_struct *work, unsigned long delay)
+{
+ int ret = 0;
+ struct timer_list *timer = &work->timer;
+
+ if (!test_and_set_bit(0, &work->pending)) {
+ BUG_ON(timer_pending(timer));
+ BUG_ON(!list_empty(&work->entry));
+ /* This stores keventd_wq for the moment, for the timer_fn */
+ work->wq_data = keventd_wq;
+ timer->expires = jiffies + delay;
+ timer->data = (unsigned long)work;
+ timer->function = delayed_work_timer_fn;
+ add_timer_on(timer, cpu);
+ ret = 1;
+ }
+ return ret;
+}
+
void flush_scheduled_work(void)
{
flush_workqueue(keventd_wq);