实验
然后使用gdb跟踪
运行到sys_time,后输入time可以看到time命令的系统调用
输入list,可以看到代码
输入s单步执行,然后输入finish把这个函数执行完
单步执行,然后return i获得数值
在system_call处设置断点,然后输入time-asm,还是停在了SYSCALL_DEFINE1,并不能在system_call停下
分析
中断指令INT 0x80执行时,系统调用号会被放入 eax 寄存器中,system_call函数可以读取eax寄存器获取,然后将其乘以4,生成偏移地址,在syscall_exit里面判断当前的任务是否##需要处理syscall_exit_work,然后跳转到work_pending,里面有work_notifysig处理信号,然后跳转到restore_all,恢复现场返回系统调用到用户态。
posted @
2019-10-26 11:50
20199323王德胜
阅读(
131)
评论()
编辑
收藏
举报