EDIT:XV6加计数系统的系统调用调用
得到它
这里是我做过什么:
在syscall.c:
extern int numSysCalls;
在sysproc.c :
int numSysCalls = -1;
好的,所以我正在实施一个简单的系统调用,返回系统调用的次数。似乎很容易,但我得到一个错误,我不明白...
基本上,这里是我所做的:在syscall.c中有 有一个函数调用syscall(),检查它是否是一个系统调用或不。我基本上已经声明了一个变量,并且每次调用这个函数时都会增加它。
瓦尔宣言syscall.c:
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。
是从syscall.c中可见的外部? – suspectus
是的。见上面的编辑。 (当我在这里粘贴时,我不小心剪掉了“extern”) – katiea
定义是int16_t类型,而extern是int类型。 – suspectus