gpt4 book ai didi

c - 在 Minix 中添加新的系统调用

转载 作者:太空宇宙 更新时间:2023-11-04 01:57:16 28 4
gpt4 key购买 nike

我正在尝试在 Minix 3.3 中创建一个新的系统调用。起初我只想创建简单的 printmsg() 调用,它会在屏幕上显示“Hello World”。
我在互联网上查看了各种教程,但仍然找不到解决方案。

  • 我在callnr.h 中定义了我的系统调用号码,如下所示#define PM_PRINTMSG (PM BASE + 48)我增加了系统调用的数量 #define NR_PM_CALLS 49 .

  • table.c 我添加了 CALL(PM_PRINTMSG) = doprintmsg .

  • proto.h 中,我描述了函数原型(prototype) `int do_printmsg(void);

  • 函数实现写在misc.c中。我添加了 #include <stdio.h>并制作了 Hello World 函数 int do printmsg(){ printf("I am a system call"); return 0; }

当我在用户程序中测试我的系统调用时 _syscall(PM_PROC_NR, PM_PRINTMSG, &m);我没有收到任何错误,但没有显示 printf。

那么,是否可以从系统调用中打印消息,因为我必须添加 <stdio.h>我自己在 misc.c 中,或者我错过了一些步骤。我忘了说我进入/usr/src/releasetools 并输入 make servicesmake install分别重新编译内核。

最佳答案

我想出了问题所在,所以如果将来有人需要这个,我会发布答案。我在这个例子中做得很好,但我未能编译内核。
位置是正确的,它是 usr/src/releasetools,但需要的命令是 make hdboot。我还发现我的 PC 在某种程度上不能很好地与这个虚拟机一起工作,即使我没有改变任何东西,我在编译时也有很多错误。当我切换到笔记本电脑时,一切正常。
我的结论是有时你的机器上有问题所以你应该尝试在不同的机器上测试问题

关于c - 在 Minix 中添加新的系统调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32508440/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com