timer: Permit statically-declared work with deferrable timers
authorPhil Carmody <ext-phil.2.carmody@nokia.com>
Wed, 20 Oct 2010 22:57:33 +0000 (15:57 -0700)
committerThomas Gleixner <tglx@linutronix.de>
Thu, 21 Oct 2010 15:30:06 +0000 (17:30 +0200)
commitdd6414b50fa2b1cd247a8aa8f8bd42414b7453e1
treed6572c35cf1997e2d18e451cb44742c89723d804
parent2bf1c05e3c406925e498d06da66b4828f0209ea6
timer: Permit statically-declared work with deferrable timers

Currently, you have to just define a delayed_work uninitialised, and then
initialise it before first use.  That's a tad clumsy.  At risk of playing
mind-games with the compiler, fooling it into doing pointer arithmetic
with compile-time-constants, this lets clients properly initialise delayed
work with deferrable timers statically.

This patch was inspired by the issues which lead Artem Bityutskiy to
commit 8eab945c5616fc984 ("sunrpc: make the cache cleaner workqueue
deferrable").

Signed-off-by: Phil Carmody <ext-phil.2.carmody@nokia.com>
Acked-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Cc: Arjan van de Ven <arjan@infradead.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
include/linux/timer.h
include/linux/workqueue.h
kernel/timer.c