编辑:
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。