Skip to contentSkip to conversation

re-export cancel_rearming_delayed_workqueue

PATCH In review James Bottomley 2 participants 3 messages Apr 10, 2005 Workqueue

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 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.

===== include/linux/workqueue.h 1.10 vs edited =====

include/linux/workqueue.h +2 -0
@@ -71,6 +71,8 @@
 
 extern void init_workqueues(void);
 void cancel_rearming_delayed_work(struct work_struct *work);
+void cancel_rearming_delayed_workqueue(struct workqueue_struct *,
+				       struct work_struct *);
 
 /*
  * Kill off a pending schedule_delayed_work().  Note that the work callback

===== kernel/workqueue.c 1.33 vs edited =====

kernel/workqueue.c +3 -2
@@ -429,12 +429,13 @@
  * @wq:   the controlling workqueue structure
  * @work: the delayed work struct
  */
-static void cancel_rearming_delayed_workqueue(struct workqueue_struct *wq,
-					struct work_struct *work)
+void cancel_rearming_delayed_workqueue(struct workqueue_struct *wq,
+				       struct work_struct *work)
 {
 	while (!cancel_delayed_work(work))
 		flush_workqueue(wq);
 }
+EXPORT_SYMBOL(cancel_rearming_delayed_workqueue);
 
 /**
  * cancel_rearming_delayed_work - reliably kill off a delayed keventd
#1 lore raw
Quoted 7 lines · James Bottomley

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.

I have absolutely no problem with such an export / unstatic if there are users... could you just send them in one go ?

#2 lore raw
Quoted 2 lines · Arjan van de Ven

I have absolutely no problem with such an export / unstatic if there are users... could you just send them in one go ?

Actually, no ... this is a nasty cross tree dependency. The piece of code is queued in the parisc tree, but Matthew can't really send it to Linus until the interface it uses is in the tree. It's someone else's code, I just fixed its problems.

James