at v2.6.26-rc2 47 lines 1.4 kB view raw
1#ifndef __UM_SYSTEM_GENERIC_H 2#define __UM_SYSTEM_GENERIC_H 3 4#include "asm/arch/system.h" 5 6#undef switch_to 7#undef local_irq_save 8#undef local_irq_restore 9#undef local_irq_disable 10#undef local_irq_enable 11#undef local_save_flags 12#undef local_irq_restore 13#undef local_irq_enable 14#undef local_irq_disable 15#undef local_irq_save 16#undef irqs_disabled 17 18extern void *switch_to(void *prev, void *next, void *last); 19 20extern int get_signals(void); 21extern int set_signals(int enable); 22extern int get_signals(void); 23extern void block_signals(void); 24extern void unblock_signals(void); 25 26#define local_save_flags(flags) do { typecheck(unsigned long, flags); \ 27 (flags) = get_signals(); } while(0) 28#define local_irq_restore(flags) do { typecheck(unsigned long, flags); \ 29 set_signals(flags); } while(0) 30 31#define local_irq_save(flags) do { local_save_flags(flags); \ 32 local_irq_disable(); } while(0) 33 34#define local_irq_enable() unblock_signals() 35#define local_irq_disable() block_signals() 36 37#define irqs_disabled() \ 38({ \ 39 unsigned long flags; \ 40 local_save_flags(flags); \ 41 (flags == 0); \ 42}) 43 44extern void *_switch_to(void *prev, void *next, void *last); 45#define switch_to(prev, next, last) prev = _switch_to(prev, next, last) 46 47#endif