cancel_work_sync — block until a work_struct's callback has terminated
int cancel_work_sync ( | struct work_struct * | work) ; |
Returns true if work
was pending.
cancel_work_sync
will cancel the work if it is queued. If the work's
callback appears to be running, cancel_work_sync
will block until it
has completed.
It is possible to use this function if the work re-queues itself. It can
cancel the work even if it migrates to another workqueue, however in that
case it only guarantees that work->func
has completed on the last queued
workqueue.
cancel_work_sync(delayed_work->work) should be used only if ->timer is not pending, otherwise it goes into a busy-wait loop until the timer expires.
The caller must ensure that workqueue_struct on which this work was last queued can't be destroyed before this function returns.