interrupts.h

来自「RTEMS (Real-Time Executive for Multiproc」· C头文件 代码 · 共 76 行

H
76
字号
/* *  i386 interrupt macros. * *  Formerly contained in and extracted from libcpu/i386/cpu.h * *  COPYRIGHT (c) 1998 valette@crf.canon.fr * *  The license and distribution terms for this file may be *  found in the file LICENSE in this distribution or at *  http://www.rtems.com/license/LICENSE. *  *  $Id: interrupts.h,v 1.1.2.1 2003/09/04 18:47:26 joel Exp $ * *  Applications must not include this file directly. */#ifndef _rtems_score_interrupts_h#define _rtems_score_interrupts_h#ifndef ASMstruct 	__rtems_raw_irq_connect_data__;typedef void (*rtems_raw_irq_hdl)		(void);typedef void (*rtems_raw_irq_enable)		(const struct __rtems_raw_irq_connect_data__*);typedef void (*rtems_raw_irq_disable)		(const struct __rtems_raw_irq_connect_data__*);typedef int  (*rtems_raw_irq_is_enabled)	(const struct __rtems_raw_irq_connect_data__*);/* *  Interrupt Level Macros */#define i386_disable_interrupts( _level ) \  { \    asm volatile ( "pushf ; \                    cli ; \                    pop %0" \                   : "=rm" ((_level)) \    ); \  }#define i386_enable_interrupts( _level )  \  { \    asm volatile ( "push %0 ; \                    popf" \                    : : "rm" ((_level)) : "cc" \    ); \  }#define i386_flash_interrupts( _level ) \  { \    asm volatile ( "push %0 ; \                    popf ; \                    cli" \                    : : "rm" ((_level)) : "cc" \    ); \  }#define i386_get_interrupt_level( _level ) \  do { \    register unsigned32 _eflags; \    \    asm volatile ( "pushf ; \                    pop %0" \                    : "=rm" ((_eflags)) \    ); \    \    _level = (_eflags & EFLAGS_INTR_ENABLE) ? 0 : 1; \  } while (0)#define _CPU_ISR_Disable( _level ) i386_disable_interrupts( _level )#define _CPU_ISR_Enable( _level ) i386_enable_interrupts( _level )     #endif#endif

⌨️ 快捷键说明

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