• T
    kthread_worker: reimplement flush_kthread_work() to allow freeing the work item being executed · 46f3d976
    Tejun Heo 提交于
    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: NTejun Heo <tj@kernel.org>
    46f3d976
kthread.c 12.8 KB