【发布时间】:2015-05-03 09:08:23
【问题描述】:
我正在向 linux Kernel 3.19 添加系统调用。尝试以下方法在 Ubuntu 14.04 LTS 中为 x86 架构添加系统调用“添加”。 src=3.19 来源
-
向 src/arch/x86/syscalls/syscall_64.tbl 添加条目。
323 common add sys_add -
将系统调用原型添加到 src/include/syscalls.h。
asmlinakge sys_add(int i,int j); 在fs目录中写add.c,在fs/Makefile中添加add.o .
在文件 src/include/uapi/asm-generic/unistd.h
添加的行
#define __NR_add 323
__SYSCALL(__NR_add, sys_add);
编译并构建了内核。这是成功的。 uname -r 的输出为 3.19。
-
创建了一个程序来测试新的系统调用。
6.1 使用了函数syscall(323,10,15)。这是成功的,因为打印了 values(25) 的总和。
6.2 当尝试按名称调用系统调用时,它给出了
/tmp/ccpxRp8C.o: In function `main': testadd1.c:(.text+0x18): undefined reference to `add' collect2: error: ld returned 1 exit status
我错过了什么?
【问题讨论】:
标签: linux ubuntu linux-kernel system-calls