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 | 429 | * @wq: the controlling workqueue structure |
| 430 | 430 | * @work: the delayed work struct |
| 431 | 431 | */ |
| 432 | −static void cancel_rearming_delayed_workqueue(struct workqueue_struct *wq, | |
| 433 | − struct work_struct *work) | |
| 432 | +void cancel_rearming_delayed_workqueue(struct workqueue_struct *wq, | |
| 433 | + struct work_struct *work) | |
| 434 | 434 | { |
| 435 | 435 | while (!cancel_delayed_work(work)) |
| 436 | 436 | flush_workqueue(wq); |
| 437 | 437 | } |
| 438 | +EXPORT_SYMBOL(cancel_rearming_delayed_workqueue); | |
| 438 | 439 | |
| 439 | 440 | /** |
| 440 | 441 | * cancel_rearming_delayed_work - reliably kill off a delayed keventd |