📄 interrupt.h
字号:
#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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -