Maj*_*imi 14 c kernel system-calls
我已下载内核2.6.38-5并想添加系统调用.我做了以下事情:
我已将系统调用添加到系统调用表中;
<src folder>/arc/x86/kernel/syscall_table_32.S
.long sys_mycall
Run Code Online (Sandbox Code Playgroud)我添加了系统电话号码;
<src folder>/include/asm-generic/unistd.h
#define __NR_mycall 244
__SYSCALL(__NR_mycall, sys_mycall)
Run Code Online (Sandbox Code Playgroud)我已将原型添加到syscalls.h;
<src follder>/include/linux/syscalls.h
asmlinkage long sys_mycall(long input);
Run Code Online (Sandbox Code Playgroud)而且,这是我的系统调用;
asmlinkage long sys_mycall(long input) {
return (input * 2);
}
Run Code Online (Sandbox Code Playgroud)我也编辑了Makefile.
现在编译之后,当我通过syscall()它使用它时,我将BAD ADDRESSerrno设置为14.
我该怎么办?
在x86上,get_thread_area()已经采用了系统调用号244 ,它将第一个参数作为指向以下内容的指针struct user_desc:
int get_thread_area(struct user_desc *u_info);
Run Code Online (Sandbox Code Playgroud)
您正在传递一个数字而不是一个指针,内核正在尝试将其解释为指针,它确定它指向您的进程之外,然后返回-EFAULT.
| 归档时间: |
|
| 查看次数: |
1240 次 |
| 最近记录: |