ARM架构下添加系统调用(与32位x86区别)
在这两种架构下添加系统调用的步骤是类似的,简要地比较一下,以2.6.28.6内核为例。
1.在内核源码相应位置(如sys.c或其他与这个函数联系紧密的文件)添加新的内核函数作为系统调用,形如
asmlinkage long sys_foo(void) { }
2.加入系统调用表。ARM架构存放于/arch/arm/kernel/call.S中,形如CALL(sys_foo);x86架构放于/arch/x86/kernel/syscall_table_32.S中,形如.long sys_foo。
3.定义系统调用号。ARM架构存放于/arch/arm/include/asm/unistd.h中,形如
#define __NR_foo (__NR_SYSCALL_BASE+361);
x86架构放于/arch/x86/include/asm/unistd_32.h中,形如
#define __NR_foo 333
4.使用方法:编译修改后的内核,在用户空间中使用syscall()调用。
作者:五岳
出处:http://www.cnblogs.com/wuyuegb2312
对于标题未标注为“转载”的文章均为原创,其版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。