]> git.baikalelectronics.ru Git - kernel.git/commit
kthread_worker: reimplement flush_kthread_work() to allow freeing the work item being...
authorTejun Heo <tj@kernel.org>
Thu, 19 Jul 2012 20:52:53 +0000 (13:52 -0700)
committerTejun Heo <tj@kernel.org>
Sun, 22 Jul 2012 17:15:28 +0000 (10:15 -0700)
commit6920e21ef0b7a7e4270ed738e6e78e1d1413cf02
tree1a8e0b20c306f84b07eedc97c07308be65a060ce
parentc5bef9871e956030b678aba21d0f3d8e5c112bec
kthread_worker: reimplement flush_kthread_work() to allow freeing the work item being executed

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: Tejun Heo <tj@kernel.org>
include/linux/kthread.h
kernel/kthread.c