With CONFIG_SMP=n:

  drivers/input/ff-memless.c:384: warning: implicit declaration of function 'local_bh_disable'
  drivers/input/ff-memless.c:393: warning: implicit declaration of function 'local_bh_enable'

Really linux/spinlock.h should include linux/interrupt.h.  But interrupt.h
includes sched.h which will need spinlock.h.

So the patch breaks the _bh declarations out into a separate header and
includes it in both interrupt.h and spinlock.h.

Cc: "Randy.Dunlap" <rdunlap@xenotime.net>
Cc: Andi Kleen <ak@suse.de>
Cc: <stable@kernel.org>
Cc: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
Andrew Morton 2006-12-06 20:31:30 -08:00 коммит произвёл Linus Torvalds
Родитель 620034c84d
Коммит 676dcb8bc2
3 изменённых файлов: 12 добавлений и 6 удалений

Просмотреть файл

@ -0,0 +1,10 @@
#ifndef _LINUX_BH_H
#define _LINUX_BH_H
extern void local_bh_disable(void);
extern void __local_bh_enable(void);
extern void _local_bh_enable(void);
extern void local_bh_enable(void);
extern void local_bh_enable_ip(unsigned long ip);
#endif /* _LINUX_BH_H */

Просмотреть файл

@ -11,6 +11,7 @@
#include <linux/hardirq.h> #include <linux/hardirq.h>
#include <linux/sched.h> #include <linux/sched.h>
#include <linux/irqflags.h> #include <linux/irqflags.h>
#include <linux/bottom_half.h>
#include <asm/atomic.h> #include <asm/atomic.h>
#include <asm/ptrace.h> #include <asm/ptrace.h>
#include <asm/system.h> #include <asm/system.h>
@ -217,12 +218,6 @@ static inline void __deprecated save_and_cli(unsigned long *x)
#define save_and_cli(x) save_and_cli(&x) #define save_and_cli(x) save_and_cli(&x)
#endif /* CONFIG_SMP */ #endif /* CONFIG_SMP */
extern void local_bh_disable(void);
extern void __local_bh_enable(void);
extern void _local_bh_enable(void);
extern void local_bh_enable(void);
extern void local_bh_enable_ip(unsigned long ip);
/* PLEASE, avoid to allocate new softirqs, if you need not _really_ high /* PLEASE, avoid to allocate new softirqs, if you need not _really_ high
frequency threaded job scheduling. For almost all the purposes frequency threaded job scheduling. For almost all the purposes
tasklets are more than enough. F.e. all serial device BHs et tasklets are more than enough. F.e. all serial device BHs et

Просмотреть файл

@ -52,6 +52,7 @@
#include <linux/thread_info.h> #include <linux/thread_info.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/stringify.h> #include <linux/stringify.h>
#include <linux/bottom_half.h>
#include <asm/system.h> #include <asm/system.h>