• Tejun Heo's avatar
    kthread_worker: reimplement flush_kthread_work() to allow freeing the work item being executed · 46f3d976
    Tejun Heo authored
    kthread_worker provides minimalistic workqueue-like interface for
    users which need a dedicated worker thread (e.g. for realtime
    priority).  It has basic queue, flush_work, flush_worker operations
    which mostly match the workqueue counterparts; however, due to the way
    flush_work() is implemented, it has a noticeable difference of not
    allowing work items to be freed while being executed.
    
    While the current users of kthread_worker are okay with the current
    behavior, the restriction does impede some valid use cases.  Also,
    removing this difference isn't difficult and actually makes the code
    easier to understand.
    
    This patch reimplements flush_kthread_work() such that it uses a
    flush_work item instead of queue/done sequence numbers.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    46f3d976
kthread.c 12.8 KB