interrupt.h
来自「用于汇编领域的,运用于OS的MAIN函数.基于硬件基础的源代码」· C头文件 代码 · 共 64 行
H
64 行
#ifndef __INTERRUPT_H_#define __INTERRUPT_H_#include "kassert.h"struct { unsigned int gs; unsigned int fs; unsigned int es; unsigned int ds; unsigned int ebp; unsigned int edi; unsigned int esi; unsigned int edx; unsigned int ecx; unsigned int ebx; unsigned int eax; unsigned int intnum; unsigned int errorcode; unsigned int eip; unsigned int cs; unsigned int eflags;} interrupt_state;typedef struct interrupt_state interrupt_state_t;typedef void (*interrupt_handler)(interrupt_state_t *state);#define EFLAGS_IF (1 << 9)void init_interrupt(void);int is_interrupts_enabled(void);void mask_irq(unsigned char irq);void unmask_irq(unsigned char irq);static __inline__ void __disable_interrupts(void){ __asm__ __volatile__ ("cli");}#define disable_interrupts() \do { \ KASSERT(is_interrupts_enabled()); \ __disable_interrupts(); \} while (0)static __inline__ void __enable_interrupts(void){ __asm__ __volatile__ ("sti");}#define enable_interrupts() \do { \ KASSERT(!is_interrupts_enabled()); \ __enable_interrupts(); \} while (0)void dump_interrupts_state(void);#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?