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