1) arch/i386/kernel/syscall_table.S 系统调用表中加入foo及foo1表项:
.long sys_foo /* 223 */
.long sys_foo1 /* 325 */
2) kernel/sys.c 中加入foo及foo1的实现代码:
asmlinkage long sys_foo(void)
{
returm 1234;
}
asmlinkage long sys_foo1(int arg1, long arg2)
{
return arg1+arg2;
}
3)在 include/asm/unistd.h中加入与系统调用表中对应用的系统调用号
#define __NR_foo 223
#define __NR_foo1 325
以上步骤完成后重新编译内核
4)测试系统调用
#include
#include
#include
#include
#define __NR_foo 223
#define __NR_foo1 325
int main(int argc, char **argv)
{
long ret1, ret2;
ret1 = syscall(__NR_foo);
ret2 = syscall(__NR_foo1, 1, 2);
printf("ret1->[%d], ret[%d]\n", ret1, ret2);
}
运行结果:
ret1->[1234], ret2->[3]
阅读(994) | 评论(0) | 转发(1) |