系统调用的工作机制(下)

给MenuOS增加time和time-asm命令

中间过程已省略了,我们所做的只是将menu更新

具体命令如下

rm menu -rf 强制删除

git clone http://github.com/mengning/menu.git 克隆相关信息

cd menu make rootfs 

使用gdb跟踪系统调用内核函数sys_time

命令如下

使用gdb跟踪调试内核

qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img -s -S # 关于-s和-S选项的说明:
另开一个shell窗口

gdb
(gdb)file linux-3.18.6/vmlinux # 在gdb界面中targe remote之前加载符号表
(gdb)target remote:1234 # 建立gdb和gdbserver之间的连接,按c 让qemu上的Linux继续运行 加载符号表

分析system_call中断处理过程

将getpid添加到menu中

首先在test.c的main函数中添加MenuConfig和相应函数

测试添加成功

调试过程如system_time,故不再重复

从system_call到iret可以用下图表示

原文地址:https://www.cnblogs.com/huyufeng/p/5322852.html