📄 system_call.txt
字号:
any questions,send email to netxiong@eyou.com
相关文件
/arch/i386/kernel/traps.c
/arch/i386/kernel/entry.S
/include/asm-i386/unistd.h
系统调用的基本流程如下
(1)首先系统会使用trap_init来对各种门调用进行初始化
set_system_gate(SYSCALL_VECTOR,&system_call);这就是系统调用的代码
SYSCALL_VECTOR已经被定义为0X80。
system_call是定义在entry.S中的一段程序
(2)ENTRY(system_call)
这段程序会保存各种状态
call *SYMBOL_NAME(sys_call_table)(,%eax,4)调用sys_call_table中的程序
(3)ENTRY(sys_call_table)
这个表就是所以的系统调用的入口地址表
如何写自己的系统调用
(1)要在unistd.h中添加一个为一个系统调用号,只用接在系统的后面就可以了
(2)在entry.S重要增加相应的系统的入口。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -