aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Bottomley <James.Bottomley@SteelEye.com>2005-04-16 18:23:59 -0400
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-04-16 18:23:59 -0400
commit81ddef77bb774e771db8588b937665cd38f40cee (patch)
tree5e89b0f6bb47a43b3b00d30a5e1e22db727b5047
parent9ffb7146f0aa9c0070cda3d8701b0a89e34913d1 (diff)
[PATCH] re-export cancel_rearming_delayed_workqueue
This was unexported by Arjan because we have no current users. However, during a conversion from tasklets to workqueues of the parisc led functions, we ran across a case where this was needed. In particular, the open coded equivalent of cancel_rearming_delayed_workqueue was implemented incorrectly, which is, I think, all the evidence necessary that this is a useful API. Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r--include/linux/workqueue.h2
-rw-r--r--kernel/workqueue.c5
2 files changed, 5 insertions, 2 deletions
diff --git a/include/linux/workqueue.h b/include/linux/workqueue.h
index ff46f537ba9b..ac39d04d027c 100644
--- a/include/linux/workqueue.h
+++ b/include/linux/workqueue.h
@@ -71,6 +71,8 @@ extern int keventd_up(void);
71 71
72extern void init_workqueues(void); 72extern void init_workqueues(void);
73void cancel_rearming_delayed_work(struct work_struct *work); 73void cancel_rearming_delayed_work(struct work_struct *work);
74void cancel_rearming_delayed_workqueue(struct workqueue_struct *,
75 struct work_struct *);
74 76
75/* 77/*
76 * Kill off a pending schedule_delayed_work(). Note that the work callback 78 * Kill off a pending schedule_delayed_work(). Note that the work callback
diff --git a/kernel/workqueue.c b/kernel/workqueue.c
index 52ef419d2747..259cf55da3c9 100644
--- a/kernel/workqueue.c
+++ b/kernel/workqueue.c
@@ -429,12 +429,13 @@ void flush_scheduled_work(void)
429 * @wq: the controlling workqueue structure 429 * @wq: the controlling workqueue structure
430 * @work: the delayed work struct 430 * @work: the delayed work struct
431 */ 431 */
432static void cancel_rearming_delayed_workqueue(struct workqueue_struct *wq, 432void cancel_rearming_delayed_workqueue(struct workqueue_struct *wq,
433 struct work_struct *work) 433 struct work_struct *work)
434{ 434{
435 while (!cancel_delayed_work(work)) 435 while (!cancel_delayed_work(work))
436 flush_workqueue(wq); 436 flush_workqueue(wq);
437} 437}
438EXPORT_SYMBOL(cancel_rearming_delayed_workqueue);
438 439
439/** 440/**
440 * cancel_rearming_delayed_work - reliably kill off a delayed keventd 441 * cancel_rearming_delayed_work - reliably kill off a delayed keventd