diff options
author | Rusty Russell <rusty@rustcorp.com.au> | 2008-05-16 10:03:47 +1000 |
---|---|---|
committer | Stephen Rothwell <sfr@canb.auug.org.au> | 2008-05-16 10:03:47 +1000 |
commit | 4bafe3baa946936a1c99080499114b562f40e489 (patch) | |
tree | 0e8b7db17e814b54cf18622b107d0fa275c7db61 /include | |
parent | 20680a4cc9c0ee7263f5786eb1dbf395b00ed296 (diff) |
stop_machine:simplify
Simplify stop_machine
stop_machine creates a kthread which creates kernel threads. We can
create those threads directly and simplify things a little. Some care
must be taken with CPU hotunplug, which has special needs, but that code
seems more robust than it was in the past.
Hotplug CPU with this patch is untested.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/stop_machine.h | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/include/linux/stop_machine.h b/include/linux/stop_machine.h index 18af011c13af..23a91577bede 100644 --- a/include/linux/stop_machine.h +++ b/include/linux/stop_machine.h @@ -17,8 +17,7 @@ * @data: the data ptr for the @fn() * @cpu: if @cpu == n, run @fn() on cpu n * if @cpu == NR_CPUS, run @fn() on any cpu - * if @cpu == ALL_CPUS, run @fn() first on the calling cpu, and then - * concurrently on all the other cpus + * if @cpu == ALL_CPUS, run @fn() on every online CPU. * * Description: This causes a thread to be scheduled on every other cpu, * each of which disables interrupts, and finally interrupts are disabled @@ -35,13 +34,10 @@ int stop_machine_run(int (*fn)(void *), void *data, unsigned int cpu); * @data: the data ptr for the @fn * @cpu: the cpu to run @fn on (or any, if @cpu == NR_CPUS. * - * Description: This is a special version of the above, which returns the - * thread which has run @fn(): kthread_stop will return the return value - * of @fn(). Used by hotplug cpu. + * Description: This is a special version of the above, which assumes cpus + * won't come or go while it's being called. Used by hotplug cpu. */ -struct task_struct *__stop_machine_run(int (*fn)(void *), void *data, - unsigned int cpu); - +int __stop_machine_run(int (*fn)(void *), void *data, unsigned int cpu); #else static inline int stop_machine_run(int (*fn)(void *), void *data, |