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, если ошибка.

Ответы на вопрос(0)

Ваш ответ на вопрос