00001
00002 #ifndef _LINUX_INTERRUPT_H
00003 #define _LINUX_INTERRUPT_H
00004
00005 struct bh_struct {
00006 void (*routine)(void *);
00007 void *data;
00008 };
00009
00010 extern unsigned long bh_active;
00011 extern unsigned long bh_mask;
00012 extern struct bh_struct bh_base[32];
00013
00014
00015
00016
00017
00018
00019
00020 enum {
00021 TIMER_BH = 0,
00022 CONSOLE_BH,
00023 SERIAL_BH,
00024 TTY_BH,
00025 INET_BH,
00026 KEYBOARD_BH
00027 };
00028
00029 extern inline void mark_bh(int nr)
00030 {
00031 __asm__ __volatile__("orl %1,%0":"=m" (bh_active):"ir" (1<<nr));
00032 }
00033
00034 extern inline void disable_bh(int nr)
00035 {
00036 __asm__ __volatile__("andl %1,%0":"=m" (bh_mask):"ir" (~(1<<nr)));
00037 }
00038
00039 extern inline void enable_bh(int nr)
00040 {
00041 __asm__ __volatile__("orl %1,%0":"=m" (bh_mask):"ir" (1<<nr));
00042 }
00043
00044 #endif