我正在尝试在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表中的填充。有没有办法知道添加系统调用后要增加的确切数字?我是通过反复试验来完成的,然后编译了。