On 07/16/2012 04:12 PM, Thomas Gleixner wrote: > Provide a generic interface for setting up and tearing down percpu > threads. > > On registration the threads for already online cpus are created and > started. On deregistration (modules) the threads are stoppped. > > During hotplug operations the threads are created, started, parked and > unparked. The datastructure for registration provides a pointer to > percpu storage space and optional setup, cleanup, park, unpark > functions. These functions are called when the thread state changes. > > Each implementation has to provide a function which is queried and > returns whether the thread should run and the thread function itself. > > The core code handles all state transitions and avoids duplicated code > in the call sites. > > Signed-off-by: Thomas Gleixner <t...@linutronix.de>
Elegant design and very beautiful code! It was such a pleasure to read and review it :-) Reviewed-by: Srivatsa S. Bhat <srivatsa.b...@linux.vnet.ibm.com> [ A minor nit below ] > --- > include/linux/smpboot.h | 43 +++++++++ > kernel/cpu.c | 10 +- > kernel/smpboot.c | 229 > ++++++++++++++++++++++++++++++++++++++++++++++++ > kernel/smpboot.h | 4 > 4 files changed, 285 insertions(+), 1 deletion(-) > > + > +/** > + * smpboot_thread_fn - percpu hotplug thread loop function > + * @void: thread data pointer s/void/data > + * > + * Checks for thread stop and park conditions. Calls the necessary > + * setup, cleanup, park and unpark functions for the registered > + * thread. > + * > + * Returns 1 when the thread should exit, 0 otherwise. > + */ > +static int smpboot_thread_fn(void *data) > +{ > + struct smpboot_thread_data *td = data; > + struct smp_hotplug_thread *ht = td->ht; > + Regards, Srivatsa S. Bhat -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/