irqflags.h

来自「linux 内核源代码」· C头文件 代码 · 共 90 行

H
90
字号
/* * include/asm-sparc64/irqflags.h * * IRQ flags handling * * This file gets included from lowlevel asm headers too, to provide * wrapped versions of the local_irq_*() APIs, based on the * raw_local_irq_*() functions from the lowlevel headers. */#ifndef _ASM_IRQFLAGS_H#define _ASM_IRQFLAGS_H#ifndef __ASSEMBLY__static inline unsigned long __raw_local_save_flags(void){	unsigned long flags;	__asm__ __volatile__(		"rdpr	%%pil, %0"		: "=r" (flags)	);	return flags;}#define raw_local_save_flags(flags) \		do { (flags) = __raw_local_save_flags(); } while (0)static inline void raw_local_irq_restore(unsigned long flags){	__asm__ __volatile__(		"wrpr	%0, %%pil"		: /* no output */		: "r" (flags)		: "memory"	);}static inline void raw_local_irq_disable(void){	__asm__ __volatile__(		"wrpr	15, %%pil"		: /* no outputs */		: /* no inputs */		: "memory"	);}static inline void raw_local_irq_enable(void){	__asm__ __volatile__(		"wrpr	0, %%pil"		: /* no outputs */		: /* no inputs */		: "memory"	);}static inline int raw_irqs_disabled_flags(unsigned long flags){	return (flags > 0);}static inline int raw_irqs_disabled(void){	unsigned long flags = __raw_local_save_flags();	return raw_irqs_disabled_flags(flags);}/* * For spinlocks, etc: */static inline unsigned long __raw_local_irq_save(void){	unsigned long flags = __raw_local_save_flags();	raw_local_irq_disable();	return flags;}#define raw_local_irq_save(flags) \		do { (flags) = __raw_local_irq_save(); } while (0)#endif /* (__ASSEMBLY__) */#endif /* !(_ASM_IRQFLAGS_H) */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?