linux/include/asm-generic/irqflags.h
<<
>>
Prefs
   1#ifndef __ASM_GENERIC_IRQFLAGS_H
   2#define __ASM_GENERIC_IRQFLAGS_H
   3
   4/*
   5 * All architectures should implement at least the first two functions,
   6 * usually inline assembly will be the best way.
   7 */
   8#ifndef RAW_IRQ_DISABLED
   9#define RAW_IRQ_DISABLED 0
  10#define RAW_IRQ_ENABLED 1
  11#endif
  12
  13/* read interrupt enabled status */
  14#ifndef __raw_local_save_flags
  15unsigned long __raw_local_save_flags(void);
  16#endif
  17
  18/* set interrupt enabled status */
  19#ifndef raw_local_irq_restore
  20void raw_local_irq_restore(unsigned long flags);
  21#endif
  22
  23/* get status and disable interrupts */
  24#ifndef __raw_local_irq_save
  25static inline unsigned long __raw_local_irq_save(void)
  26{
  27        unsigned long flags;
  28        flags = __raw_local_save_flags();
  29        raw_local_irq_restore(RAW_IRQ_DISABLED);
  30        return flags;
  31}
  32#endif
  33
  34/* test flags */
  35#ifndef raw_irqs_disabled_flags
  36static inline int raw_irqs_disabled_flags(unsigned long flags)
  37{
  38        return flags == RAW_IRQ_DISABLED;
  39}
  40#endif
  41
  42/* unconditionally enable interrupts */
  43#ifndef raw_local_irq_enable
  44static inline void raw_local_irq_enable(void)
  45{
  46        raw_local_irq_restore(RAW_IRQ_ENABLED);
  47}
  48#endif
  49
  50/* unconditionally disable interrupts */
  51#ifndef raw_local_irq_disable
  52static inline void raw_local_irq_disable(void)
  53{
  54        raw_local_irq_restore(RAW_IRQ_DISABLED);
  55}
  56#endif
  57
  58/* test hardware interrupt enable bit */
  59#ifndef raw_irqs_disabled
  60static inline int raw_irqs_disabled(void)
  61{
  62        return raw_irqs_disabled_flags(__raw_local_save_flags());
  63}
  64#endif
  65
  66#define raw_local_save_flags(flags) \
  67        do { (flags) = __raw_local_save_flags(); } while (0)
  68
  69#define raw_local_irq_save(flags) \
  70        do { (flags) = __raw_local_irq_save(); } while (0)
  71
  72#endif /* __ASM_GENERIC_IRQFLAGS_H */
  73