xv6添加一个计算系统调用的系统调用

时间:2014-02-08 23:38:46

标签: c system-calls xv6

编辑:

GOT IT

这就是我所做的:

在syscall.c中:

extern int numSysCalls;
sysproc.c中的

int numSysCalls = -1;

好的,所以我正在努力实现一个简单的系统调用,它返回系统调用的次数。看起来很简单,但我收到一个我不明白的错误......

基本上,这就是我所做的: 在syscall.c中有一个名为syscall()的函数,用于检查它是否是系统调用。我基本上已经声明了一个变量,并且每次调用此函数时都会递增它。

syscall.c中的Var声明:

18: int16_t numSysCalls = -1; //global

Syscall()函数:

115:  void syscall(void){
116:     numSysCalls++; 
...

我得到的错误:

kernel/syscall.c:116: error: ‘numSysCalls’ undeclared (first use in this function)
kernel/syscall.c:116: error: (Each undeclared identifier is reported only once
kernel/syscall.c:116: error: for each function it appears in.)

然后,在sysproc.c中,我有相同的extern int,当我调用我的函数numCalls时,只返回int,如下所示:

sysproc.c中的外部变量:

extern int numSysCalls;

有问题的方法:

int sys_numSys(void){
if (numSysCalls == -1) return numSysCalls;
else return numSysCalls + 1;
}

总结:每当调用一个系统调用(任何类型)时,numSysCalls都应该递增 - 成功与否。

numSys仅返回数字,如果错误则返回-1。

0 个答案:

没有答案