On Thu, 2012-03-15 at 07:19 +1100, Stephen Rothwell wrote: > On Wed, 14 Mar 2012 08:56:22 -0700 Randy Dunlap <rdunlap@xxxxxxxxxxxx> wrote: > > > > on x86_64: > > > > kernel/printk.c:1230:5: error: redefinition of 'printk_sched' > > include/linux/printk.h:136:5: note: previous definition of 'printk_sched' was here > > Caused by commit 3ccf3e830615 ("printk/sched: Introduce special > printk_sched() for those awkward moments") from the tip tree. The > declaration in include/linux/printk.h has alternatives determined by > CONFIG_PRINTK, but the definition in kernel/printk.c is not so > protected ... Ingo, could you stick this on top.. ? --- Subject: printk: Make it compile with !CONFIG_PRINTK Commit 3ccf3e830615 ("printk/sched: Introduce special printk_sched() for those awkward moments") overlooked an #ifdef, so move code around to respect these directives. Reported-by: Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx> Signed-off-by: Peter Zijlstra <a.p.zijlstra@xxxxxxxxx> --- kernel/printk.c | 40 ++++++++++++++++++++-------------------- 1 files changed, 20 insertions(+), 20 deletions(-) diff --git a/kernel/printk.c b/kernel/printk.c index 8b6981e..b663c2c 100644 --- a/kernel/printk.c +++ b/kernel/printk.c @@ -1227,26 +1227,6 @@ int is_console_locked(void) static DEFINE_PER_CPU(int, printk_pending); static DEFINE_PER_CPU(char [PRINTK_BUF_SIZE], printk_sched_buf); -int printk_sched(const char *fmt, ...) -{ - unsigned long flags; - va_list args; - char *buf; - int r; - - local_irq_save(flags); - buf = __get_cpu_var(printk_sched_buf); - - va_start(args, fmt); - r = vsnprintf(buf, PRINTK_BUF_SIZE, fmt, args); - va_end(args); - - __this_cpu_or(printk_pending, PRINTK_PENDING_SCHED); - local_irq_restore(flags); - - return r; -} - void printk_tick(void) { if (__this_cpu_read(printk_pending)) { @@ -1663,6 +1643,26 @@ late_initcall(printk_late_init); #if defined CONFIG_PRINTK +int printk_sched(const char *fmt, ...) +{ + unsigned long flags; + va_list args; + char *buf; + int r; + + local_irq_save(flags); + buf = __get_cpu_var(printk_sched_buf); + + va_start(args, fmt); + r = vsnprintf(buf, PRINTK_BUF_SIZE, fmt, args); + va_end(args); + + __this_cpu_or(printk_pending, PRINTK_PENDING_SCHED); + local_irq_restore(flags); + + return r; +} + /* * printk rate limiting, lifted from the networking subsystem. * -- To unsubscribe from this list: send the line "unsubscribe linux-next" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html