杨金龙 原创作品转载请注明出处
课程相关–《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

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

4727

被折叠的 条评论
为什么被折叠?



