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.
Showing the changes to kernel/workqueue.c (1 of 2 files). Show all
Unified · Split
| @@ -429,12 +429,13 @@ void flush_scheduled_work(void) · 428 unmodified lines | |||
| 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 | */ |
| 432 | static void cancel_rearming_delayed_workqueue(struct workqueue_struct *wq, | 432 | void 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 | } |
| 438 | EXPORT_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 |