【发布时间】:2011-08-25 13:54:02
【问题描述】:
我已经下载了内核 2.6.38-5 并且想添加一个系统调用。 我做了以下事情:
-
我已将我的系统调用添加到系统调用表中;
<src folder>/arc/x86/kernel/syscall_table_32.S .long sys_mycall -
我已经添加了系统调用号;
<src folder>/include/asm-generic/unistd.h #define __NR_mycall 244 __SYSCALL(__NR_mycall, sys_mycall) -
我已经将原型添加到
syscalls.h;<src follder>/include/linux/syscalls.h asmlinkage long sys_mycall(long input); -
还有,这是我的系统调用;
asmlinkage long sys_mycall(long input) { return (input * 2); } 我也编辑了 Makefile。
现在编译后,当我通过syscall() 使用它时,它给了我BAD ADDRESS 并且errno 设置为14。
我该怎么办?
【问题讨论】:
-
+1,恭喜您获得了令人满意的完整描述和对您问题的最少了解。你无法想象新来的人会就非常低级的东西提出非常广泛的问题。
标签: c kernel system-calls