编辑:
知道了
这是我所做的:
在 syscall.c 中:
extern int numSysCalls;
在 sysproc.c 中:
int numSysCalls = -1;
好的,所以我正在努力实现一个简单的系统调用,它返回系统调用的次数。看起来很简单,但我遇到了一个我不明白的错误......
基本上,这就是我所做的:在 syscall.c 中有一个名为 syscall() 的函数,用于检查它是否是系统调用。我基本上已经声明了一个变量,并且每次调用这个函数时都会递增它。
syscall.c 中的 Var 声明:
18: int16_t numSysCalls = -1; //global
系统调用()函数:
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。