1)在内核里添加系统调用,函数形式是:asmlinkage type sys_func_name(...)
2)在文件include/asm-arm/unistd.h里面添加
define __NR_mbind (__NR_SYSCALL_BASE+319)
define __NR_get_mempolicy (__NR_SYSCALL_BASE+320)
define __NR_set_mempolicy (__NR_SYSCALL_BASE+321)
define __NR_func_name (__NR_SYSCALL_BASE+322) //here
3)在文件arch/arm/kernel/calls.S里面添加
CALL(sys_inotify_rm_watch)
CALL(sys_mbind)
CALL(sys_get_mempolicy)
CALL(sys_set_mempolicy)
CALL(sys_func_name) //add
4)在文件include/linux/syscalls.h里面添加系统调用函数申明: asmlinkage type
sys_func_name(...);
到此系统调用已经成功添加上去了,调用的时候就先申明: _syscall2(int, func_name,unsigned
short int, opt, void *, argv);
其中_syscall后面的2表示函数有两个参数,如果函数有三个参数就要用_syscall3了,最大有一个_syscall6,int是
函数返回类型,func_name是函数名,unsigned short int是函数第一个参数类型,紧接着是参数名,以此类推。
申明以后就可以直接调用了:func_name(opt,argv); 另外包含的头文件要有 unistd.h //与体系相关,
errno.h