workqueue: set delayed_work->timer function on initialization
authorTejun Heo <tj@kernel.org>
Fri, 3 Aug 2012 17:30:45 +0000 (10:30 -0700)
committerTejun Heo <tj@kernel.org>
Fri, 3 Aug 2012 17:30:45 +0000 (10:30 -0700)
commitd8e794dfd51c368ed3f686b7f4172830b60ae47b
tree72e930ab0a14bf50fa1dc6802722483247b72806
parent8930caba3dbdd8b86dd6934a5920bf61b53a931e
workqueue: set delayed_work->timer function on initialization

delayed_work->timer.function is currently initialized during
queue_delayed_work_on().  Export delayed_work_timer_fn() and set
delayed_work timer function during delayed_work initialization
together with other fields.

This ensures the timer function is always valid on an initialized
delayed_work.  This is to help mod_delayed_work() implementation.

To detect delayed_work users which diddle with the internal timer,
trigger WARN if timer function doesn't match on queue.

Signed-off-by: Tejun Heo <tj@kernel.org>
include/linux/workqueue.h
kernel/workqueue.c