diff options
| author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2004-08-23 00:37:07 -0700 |
|---|---|---|
| committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2004-08-23 00:37:07 -0700 |
| commit | aea40b2905d269b11a7382d84e9cb0f4c067922e (patch) | |
| tree | 3cf16968659fa6a43a2b5e28ece06dc305d320b2 /kernel/workqueue.c | |
| parent | 01a17cfd0ccd0bea05f4000f4560807507fbed84 (diff) | |
| parent | 9c9dada1d5cfd06f06b00ef84ef01839b9ac65ed (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.c | 20 |
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); |
