首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >添加系统调用时地址错误

添加系统调用时地址错误
EN

Stack Overflow用户
提问于 2011-05-14 16:23:07
回答 2查看 1.7K关注 0票数 14

我下载了内核2.6.38-5,并希望添加一个系统调用。我做了以下工作:

  1. 我已将系统调用添加到系统调用表中; /弧/x86/内核/syscall_table_32.S .long sys_mycall
  2. 我增加了系统呼叫号码; /include/asm-泛型/unistd.h#定义__NR_mycall 244 __SYSCALL(__NR_mycall,sys_mycall)
  3. 我已经将原型添加到syscalls.h中; /include/linux/syscalls.h作为链接长sys_mycall(长输入);
  4. 这是我的系统呼叫; 连接长sys_mycall(长输入){返回(输入* 2);}
  5. 我也编辑过Makefiles。

现在,在编译之后,当我通过syscall()使用它时,它给了我BAD ADDRESS,并将errno设置为14。

我该怎么办?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-14 19:04:19

在x86上,系统调用号244已经被面积()接受,它以指向struct user_desc的指针作为第一个参数

代码语言:javascript
复制
int get_thread_area(struct user_desc *u_info);

您正在传递一个数字而不是指针,内核试图将它解释为指针,它确定它指向进程之外,并返回-EFAULT

票数 5
EN

Stack Overflow用户

发布于 2011-05-14 17:46:21

Syscalls查询正在运行的内核。函数被映射到内核中的地址空间。如果您不安装此内核并重新启动计算机,则该地址将无效。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6003144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档