xv6 добавить системный вызов, который считает системные вызовы
РЕДАКТИРОВАТЬ:
ПОНЯЛ
вот что я сделал:
в syscall.c:
extern int numSysCalls;
в sysproc.c:
int numSysCalls = -1;
Итак, я работаю над реализацией простого системного вызова, который возвращает количество выполненных системных вызовов. Кажется легким, но я получаю ошибку, которую я не понимаю ...
По сути, вот что я сделал: в syscall.c есть функция syscall (), которая проверяет, является ли это syscall или нет. Я в основном объявил переменную и увеличиваю ее каждый раз, когда вызывается эта функция.
Объявление Var в syscall.c:
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, и я просто возвращаю int при вызове моей функции numCalls следующим образом:
Внешняя переменная в sysproc.c:
extern int numSysCalls;
Метод в вопросе:
int sys_numSys(void){
if (numSysCalls == -1) return numSysCalls;
else return numSysCalls + 1;
}
В итоге: numSysCalls должен быть увеличенвсякий раз, когда системный вызов (любого рода) называется - успешно или нет.
numSys только возвращает число или -1, если ошибка.