flush_scheduled_work - ensure that any scheduled work has run to completion.
2. SYNOPSIS ▲
void flush_scheduled_work( void );
3. ARGUMENTS ▲
4. DESCRIPTION ▲
Forces execution of the kernel-global workqueue and blocks until its completion.
Think twice before calling this function! ItAqs very easy to get into trouble if you donAqt take great care. Either of the following situations
5. WILL LEAD TO DEADLOCK ▲
One of the work items currently on the workqueue needs to acquire a lock held by your code or its caller.
Your code is running in the context of a work routine.
They will be detected by lockdep when they occur, but the first might not occur very often. It depends on what work items are on the workqueue and what locks they need, which you have no control over.
In most situations flushing the entire workqueue is overkill; you merely need to know that a particular work item isnAqt queued and isnAqt running. In such cases you should use cancel_delayed_work_sync or cancel_work_sync instead.
6. COPYRIGHT ▲