1首先来讲讲应用程序如何实现系统调用(用户态->内核态)?
...要调用的sys_write()的索引值 lsl #2:左移2位,一个函数指针占据4个字节
从上面代码可以看出,2440的val基值为0x900000,也就是说要调用数组表的第一个函数时,则使用...其中CALL定义如下所示:
.equ NR_syscalls,0 //将NR_syscalls=0
#define CALL(x) .equ NR_syscalls,NR_syscalls+1...//将CALL(x) 定义为:NR_syscalls=NR_syscalls+1 ,也就是每有一个CALL(),则该CALL值则+1
#include "calls.S"...如上图所示,一个简单的系统调用便OK了
调用成功后,就可以来修改sys_hello(),来打印应用程序的各个寄存器值,打断点,来实现调试应用程序,需要用到:
task_pt_regs(current