sysproc.c和sysfile.c如何链接到xv6

时间:2018-01-12 13:55:59

标签: c xv6

我正在尝试添加一组系统调用来支持xv6中的信号量。 我添加了一个syssemaphore.c文件(将使用argptr,argint等来使用将从ustack路径用户参数的函数进行存储)并注意到我找不到将连接我将编写的函数的h文件。 基本上我想添加sysproc.c和sysfile.c等文件。 有可能吗?

1 个答案:

答案 0 :(得分:0)

添加一个新的系统调用到XV6意味着改变整个系统调用机制流,从用户空间调用系统调用中断同时在eax寄存器中设置系统调用id号,通过运行正确系统调用处理程序的syscall函数,最后到系统调用实现(包括一个sys_something函数来检索用户参数并验证它们)。

如果我正确理解您的问题,那么您的新文件syssemaphore.c包含您希望在syscall.c文件中从syscall调用的sys_something函数。

syscall函数是应该调用新的sys_something包装器的唯一函数。因此,将这些函数原型(作为extern函数)添加到syscall.c文件中的syscalls数组上方就足够了,这样就可以将新函数添加到syscalls数组中。

请参阅How to pass a value into system call XV6

上的其他信息