#define _NR_sysmycall 318 //
不能与前面已有的重复
#define _NR_syscalls 319//
修改系统中所用系统调用数目
2.
在系统调用向量表里添加自定义的系统调用函数入口位置,
/usr/src/linux/arch/i386/kernel/syscall_table.S
,以前老版本是
entry.s
.long sys_mysyscall
3.添加系统调用定义在include/linux/syscalls.h
asmlinkage long sys_add_trustdb(u8 __user * digest,u8 __user *name,int new);
特别注意使用用户态的指针,需要添加__user
4.在需要的地方添加系统调用实现函数
asmlinkage int sys_mysyscall(int a)
{
return a;
}
编写用户态代码测试
int main(void)
{
int a=syscall(318,100);//318
是系统调用号,
100
是参数
printf("%d/n",a);
return 0;
}
syscall
是内核提供为用户程序的一个函数,
如果不使用syscall函数,也可以使用宏定义,但是在2.6.20以后的版本里,没有宏定义,需要自己从其他版本里复制过来添加。