我正在尝试创建一个系统调用,该系统调用将增加添加到 cpu 结构中的数字。但是我相信系统调用必须是空的,那么我如何在调用它时传递一个值。
增量数(3);
Xv6 有自己的函数,用于将参数从用户空间传递到内核空间(系统调用)。您可以使用 argint() 在系统调用中检索整数参数,并使用 argstr() 检索字符串参数。
可以通过传统方式传递参数,但要检索参数,您必须使用这些方法。在你的情况下:
在 syscall.c 中:
extern int incrementNum(int);
static int (*syscalls[])(void) = {
...
[SYS_incrementNum] sys_incrementNum,
};
在系统调用.h中
#define SYS_incrementNum 22
在用户.h中
int incrementNum(int);
在美国系统公司
SYSCALL(incrementNum);
在 sysproc.c 中(您要检索参数的位置)
int
sys_incrementNum(int num)
{
argint(0,&num); //retrieving first argument
cprintf("%d - Inside system call!",num);
}
现在可以通过以下方式调用系统调用:
incrementNum(3);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)