我想向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文件。
答案 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;
如前所述,鉴于您难以弄清楚如何处理新文件,很明显您不熟悉编程,因此在您成长之前,您真的不应该触摸内核。