Something went wrong. Try again.
(I'm so sorry!) Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
Something went wrong. Try again.
1.5 kB · 67 lines
C
at master
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768/* SPDX-License-Identifier: GPL-2.0 */#ifndef __ASM_GENERIC_IRQFLAGS_H#define __ASM_GENERIC_IRQFLAGS_H
/* * All architectures should implement at least the first two functions, * usually inline assembly will be the best way. */#ifndef ARCH_IRQ_DISABLED#define ARCH_IRQ_DISABLED 0#define ARCH_IRQ_ENABLED 1#endif
/* read interrupt enabled status */#ifndef arch_local_save_flagsunsigned long arch_local_save_flags(void);#endif
/* set interrupt enabled status */#ifndef arch_local_irq_restorevoid arch_local_irq_restore(unsigned long flags);#endif
/* get status and disable interrupts */#ifndef arch_local_irq_savestatic inline unsigned long arch_local_irq_save(void){ unsigned long flags; flags = arch_local_save_flags(); arch_local_irq_restore(ARCH_IRQ_DISABLED); return flags;}#endif
/* test flags */#ifndef arch_irqs_disabled_flagsstatic inline int arch_irqs_disabled_flags(unsigned long flags){ return flags == ARCH_IRQ_DISABLED;}#endif
/* unconditionally enable interrupts */#ifndef arch_local_irq_enablestatic inline void arch_local_irq_enable(void){ arch_local_irq_restore(ARCH_IRQ_ENABLED);}#endif
/* unconditionally disable interrupts */#ifndef arch_local_irq_disablestatic inline void arch_local_irq_disable(void){ arch_local_irq_restore(ARCH_IRQ_DISABLED);}#endif
/* test hardware interrupt enable bit */#ifndef arch_irqs_disabledstatic inline int arch_irqs_disabled(void){ return arch_irqs_disabled_flags(arch_local_save_flags());}#endif
#endif /* __ASM_GENERIC_IRQFLAGS_H */