Commit bff2dc42 authored by David Daney's avatar David Daney Committed by Linus Torvalds

smp.h: move !SMP version of on_each_cpu() out-of-line

All of the other non-trivial !SMP versions of functions in smp.h are
out-of-line in up.c.  Move on_each_cpu() there as well.

This allows us to get rid of the #include <linux/irqflags.h>.  The
drawback is that this makes both the x86_64 and i386 defconfig !SMP
kernels about 200 bytes larger each.
Signed-off-by: default avatarDavid Daney <david.daney@cavium.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 081192b2
...@@ -11,7 +11,6 @@ ...@@ -11,7 +11,6 @@
#include <linux/list.h> #include <linux/list.h>
#include <linux/cpumask.h> #include <linux/cpumask.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/irqflags.h>
extern void cpu_idle(void); extern void cpu_idle(void);
...@@ -29,6 +28,11 @@ extern unsigned int total_cpus; ...@@ -29,6 +28,11 @@ extern unsigned int total_cpus;
int smp_call_function_single(int cpuid, smp_call_func_t func, void *info, int smp_call_function_single(int cpuid, smp_call_func_t func, void *info,
int wait); int wait);
/*
* Call a function on all processors
*/
int on_each_cpu(smp_call_func_t func, void *info, int wait);
/* /*
* Call a function on processors specified by mask, which might include * Call a function on processors specified by mask, which might include
* the local one. * the local one.
...@@ -111,11 +115,6 @@ void generic_smp_call_function_single_interrupt(void); ...@@ -111,11 +115,6 @@ void generic_smp_call_function_single_interrupt(void);
static inline void call_function_init(void) { } static inline void call_function_init(void) { }
#endif #endif
/*
* Call a function on all processors
*/
int on_each_cpu(smp_call_func_t func, void *info, int wait);
/* /*
* Mark the boot cpu "online" so that it can call console drivers in * Mark the boot cpu "online" so that it can call console drivers in
* printk() and can access its per-cpu storage. * printk() and can access its per-cpu storage.
...@@ -141,16 +140,6 @@ static inline int up_smp_call_function(smp_call_func_t func, void *info) ...@@ -141,16 +140,6 @@ static inline int up_smp_call_function(smp_call_func_t func, void *info)
#define smp_call_function(func, info, wait) \ #define smp_call_function(func, info, wait) \
(up_smp_call_function(func, info)) (up_smp_call_function(func, info))
static inline int on_each_cpu(smp_call_func_t func, void *info, int wait)
{
unsigned long flags;
local_irq_save(flags);
func(info);
local_irq_restore(flags);
return 0;
}
static inline void smp_send_reschedule(int cpu) { } static inline void smp_send_reschedule(int cpu) { }
#define smp_prepare_boot_cpu() do {} while (0) #define smp_prepare_boot_cpu() do {} while (0)
#define smp_call_function_many(mask, func, info, wait) \ #define smp_call_function_many(mask, func, info, wait) \
......
...@@ -22,6 +22,17 @@ int smp_call_function_single(int cpu, void (*func) (void *info), void *info, ...@@ -22,6 +22,17 @@ int smp_call_function_single(int cpu, void (*func) (void *info), void *info,
} }
EXPORT_SYMBOL(smp_call_function_single); EXPORT_SYMBOL(smp_call_function_single);
int on_each_cpu(smp_call_func_t func, void *info, int wait)
{
unsigned long flags;
local_irq_save(flags);
func(info);
local_irq_restore(flags);
return 0;
}
EXPORT_SYMBOL(on_each_cpu);
/* /*
* Note we still need to test the mask even for UP * Note we still need to test the mask even for UP
* because we actually can get an empty mask from * because we actually can get an empty mask from
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment