【发布时间】: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 services 和 make install 来重新编译内核。
【问题讨论】:
标签: c operating-system system system-calls minix