无法在Raspberry Pi上创建新的系统调用

时间:2015-10-04 06:42:57

标签: linux linux-kernel raspberry-pi

我正在尝试在Raspberry Pi的最新内核源代码4.1.17中创建一个系统调用。我已按照以下步骤操作:

  • 增加了arch/arm/include/asm/unistd.h
  • 中的数字
  • 在文件末尾的arch/arm/kernel/calls.S中创建了一个条目CALL,作为CALL(sys_helloworld)
  • #define __NR_helloworld (__NR_SYSCALL_BASE+388)
  • 中创建了arch/arm/include/uapi/asm/unistd.h
  • include/linux/syscalls.h
  • 中添加了定义
  • 最终在arch/arm/kernel/sys_arm.c中使用名称sys_helloworld
  • 实施了系统调用

交叉编译后,它说:

  

arch / arm / kernel / entry-common.S:108:错误:__ NR_syscalls不等于系统调用表的大小。

我仍然遗漏了entry-commons.S要做的事情吗?

编辑:我通过在arch/arm/include/asm/unistd.h中添加额外数字来解决编译问题。之前这个数字是388.在添加系统调用后,我不得不将其增加到392. this link表明这是由于syscall表中的填充。有没有办法知道添加系统调用后要增加的确切数字?我是通过反复试验来完成的,然后编译了。

0 个答案:

没有答案