traps.c.txt

来自「这是一个牛人的linux学习内核时分析内核的笔记」· 文本 代码 · 共 40 行

TXT
40
字号
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 + =
减小字号Ctrl + -
显示快捷键?