Skip to content

Commit

Permalink
smp.h: move !SMP version of on_each_cpu() out-of-line
Browse files Browse the repository at this point in the history
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: David Daney <david.daney@cavium.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  • Loading branch information
daviddaney authored and torvalds committed Sep 11, 2013
1 parent 081192b commit bff2dc4
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 16 deletions.
21 changes: 5 additions & 16 deletions include/linux/smp.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
#include <linux/list.h>
#include <linux/cpumask.h>
#include <linux/init.h>
#include <linux/irqflags.h>

extern void cpu_idle(void);

Expand All @@ -29,6 +28,11 @@ extern unsigned int total_cpus;
int smp_call_function_single(int cpuid, smp_call_func_t func, void *info,
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
* the local one.
Expand Down Expand Up @@ -111,11 +115,6 @@ void generic_smp_call_function_single_interrupt(void);
static inline void call_function_init(void) { }
#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
* printk() and can access its per-cpu storage.
Expand All @@ -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) \
(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) { }
#define smp_prepare_boot_cpu() do {} while (0)
#define smp_call_function_many(mask, func, info, wait) \
Expand Down
11 changes: 11 additions & 0 deletions kernel/up.c
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,17 @@ int smp_call_function_single(int cpu, void (*func) (void *info), void *info,
}
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
* because we actually can get an empty mask from
Expand Down

0 comments on commit bff2dc4

Please sign in to comment.