⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 traps.c.txt

📁 这是一个牛人的linux学习内核时分析内核的笔记
💻 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 + -