system_call.txt
来自「linux内核学习笔记 希望想看的人可以很快下载到」· 文本 代码 · 共 30 行
TXT
30 行
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 + =
减小字号Ctrl + -
显示快捷键?