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 ARCH_IRQ_DISABLED
   9#define ARCH_IRQ_DISABLED 0
  10#define ARCH_IRQ_ENABLED 1
  11#endif
  12
  13/* read interrupt enabled status */
  14#ifndef arch_local_save_flags
  15unsigned long arch_local_save_flags(void);
  16#endif
  17
  18/* set interrupt enabled status */
  19#ifndef arch_local_irq_restore
  20void arch_local_irq_restore(unsigned long flags);
  21#endif
  22
  23/* get status and disable interrupts */
  24#ifndef arch_local_irq_save
  25static inline unsigned long arch_local_irq_save(void)
  26{
  27        unsigned long flags;
  28        flags = arch_local_save_flags();
  29        arch_local_irq_restore(ARCH_IRQ_DISABLED);
  30        return flags;
  31}
  32#endif
  33
  34/* test flags */
  35#ifndef arch_irqs_disabled_flags
  36static inline int arch_irqs_disabled_flags(unsigned long flags)
  37{
  38        return flags == ARCH_IRQ_DISABLED;
  39}
  40#endif
  41
  42/* unconditionally enable interrupts */
  43#ifndef arch_local_irq_enable
  44static inline void arch_local_irq_enable(void)
  45{
  46        arch_local_irq_restore(ARCH_IRQ_ENABLED);
  47}
  48#endif
  49
  50/* unconditionally disable interrupts */
  51#ifndef arch_local_irq_disable
  52static inline void arch_local_irq_disable(void)
  53{
  54        arch_local_irq_restore(ARCH_IRQ_DISABLED);
  55}
  56#endif
  57
  58/* test hardware interrupt enable bit */
  59#ifndef arch_irqs_disabled
  60static inline int arch_irqs_disabled(void)
  61{
  62        return arch_irqs_disabled_flags(arch_local_save_flags());
  63}
  64#endif
  65
  66#endif /* __ASM_GENERIC_IRQFLAGS_H */
  67