📄 traps.c.txt
字号:
any questions,send email to netxiong@eyou.com
相关文件
/include/asm-i386/unistd.h
/arch/i386/kernel/entry.S
*****************调用门的初始化***************************
(1)void __init trap_init(void) //主要完成各种调用门的初始化
set_trap_gate(x,&xxxx_xxxx); //陷阱门
……
set_system_gate(SYSCALL_VECTOR,&system_call); //系统调用的入口
**********************************************************
*****************辅助函数**********************************
(1)void set_intr_gate(unsigned int n, void *addr)
_set_gate(idt_table+n,14,0,addr);
(2)static void __init set_trap_gate(unsigned int n, void *addr)
_set_gate(idt_table+n,15,0,addr);
(3)static void __init set_system_gate(unsigned int n, void *addr)
_set_gate(idt_table+n,15,3,addr);
(4)static void __init set_call_gate(void *a, void *addr)
_set_gate(a,12,3,addr);
以上的函数就是设置各种门的函数,他们都调用同一个函数 _set_gate
(5)#define _set_gate(gate_addr,type,dpl,addr)
参数type是类型,12是386调用门,14是386中断门,15是386陷阱门
参数dpl是级别,0是内核级,3是用户级
***********************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -