【问题标题】:Adding new System Call in Minix在 Minix 中添加新的系统调用
【发布时间】:2015-12-07 03:04:12
【问题描述】:

我正在尝试在 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 中我描述了函数原型 `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。

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

【问题讨论】:

    标签: c operating-system system system-calls minix


    【解决方案1】:

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

    【讨论】:

    • 很长一段时间我在 pm server 目录中做make; make install。这对我帮助很大
    猜你喜欢
    • 2020-06-14
    • 1970-01-01
    • 1970-01-01
    • 2014-12-13
    • 1970-01-01
    • 2016-06-02
    • 1970-01-01
    • 2016-05-31
    • 2020-02-22
    相关资源
    最近更新 更多