在FreeBSD上添加新的系统调用

时间:2016-02-20 18:40:04

标签: makefile system-calls freebsd

我想向FreeBSD添加自定义helloworld系统调用。我使用以下链接作为我的向导:http://members.tripod.com/s_mathur/bsdhowto.html在步骤4中说:修改Make文件以包含sys_hello.c等,然后重新编译内核!哪个制作文件?它在哪里?以及如何编译它以及如何调用syscall你好?

我遇到的错误是: init_sysent.o :(。data + 0x6638):未定义引用' sys_hello'

我认为这是因为我的Make文件,因为我不知道我应该修改哪个Make文件。

1 个答案:

答案 0 :(得分:0)

我担心你还没准备好进行任何内核开发,因此强烈建议你不要使用它。

我不知道你是如何得到这个指南的,当我找到将系统调用添加到FreeBSD内核的方法时,我很难找到它。

该指南有一些过时的位和一些总是错误的位。

您创建了一个新文件(sys_hello.c),但未将其添加到构建过程中。弄清楚如何做到这一点应该是微不足道的。 1.选择一个始终提供的系统调用,如fork 2.找到实现它的文件 3. grep源树以提及该文件 4.利润

执行步骤并获得答案留给读者练习。

(nFee*aRate[2])

K& R C声明?这个多大了? 几年来的第一个论点是结构线程*。

(int)

根本错误。考虑如果用户空间传递内核地址会发生什么。此外,这假设共享地址空间为" work"。代码应该使用copyout。除了通过不允许用户空间说出大小是什么的参数之外,代码还是错误的。

int syshello(p, uap)
struct proc* p; struct syshello_args uap;

如前所述,鉴于您难以弄清楚如何处理新文件,很明显您不熟悉编程,因此在您成长之前,您真的不应该触摸内核。