系统调用过程

本文记录了Linux内核分析课程中关于系统调用的学习和实验。通过修改实验代码添加自定义系统调用,使用gdb跟踪mkdir系统调用,深入理解系统调用的处理过程,包括从int *0x80*指令到system_call的流程,以及在系统调用中如何处理信号和调度进程。

杨金龙 原创作品转载请注明出处

课程相关–《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000

  本文主要记录Linux内核分析课程第五周的学习内容和实验分析,详细内容如下。

实验过程

修改实验代码

  在老师给出代码的基础上,添加自己实现的简单系统调用的代码,增加两个菜单命令,详细代码不再贴出,主要在main函数中增加命令配置,如下:

int main()
{
    ...
    MenuConfig("makedir","Create a empty folder through C code!",Mkdir);
    MenuConfig("makedir-asm","Create a empty folder through asm!",Mkdir_asm);
    ...
}

  重新编译,试运行成功,结果如下:

跟踪mkdir系统调用函数

  打开另一个终端,开启gdb调试

$ gdb
(gdb) file linux-3.18.6/vmlinux
Reading symbols from linux-3.18.6/vmlinux...done.
(gdb) target remote:1234
Remote debugging using :1234
0x0000fff0 in ?? ()
(gdb) b sys_mkdir

  其中,file命令用于加载linux内核代码的符号表,target用于将g

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值