xv6 adiciona uma chamada do sistema que conta as chamadas do sistema

EDITAR:

ENTENDI

aqui está o que eu fiz:

em syscall.c:

extern int numSysCalls;

em sysproc.c:

int numSysCalls = -1;

Ok, estou trabalhando na implementação de uma chamada de sistema fácil que retorna o número de vezes que uma chamada de sistema foi feita. Parece fácil, mas estou recebendo um erro que não entendo ...

Basicamente, aqui está o que eu fiz: no syscall.c existe uma função chamada syscall () que verifica se é um syscall ou não. Eu basicamente declarei uma variável e a incremento toda vez que essa função é chamada.

Declaração Var em syscall.c:

18: int16_t numSysCalls = -1; //global

Função Syscall ():

115:  void syscall(void){
116:     numSysCalls++; 
...

Erro que estou recebendo:

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.)

Então, no sysproc.c, tenho o mesmo int externo e simplesmente retorno o int quando chamo minha função numCalls, da seguinte maneira:

Variável externa em sysproc.c:

extern int numSysCalls;

Método em questão:

int sys_numSys(void){
if (numSysCalls == -1) return numSysCalls;
else return numSysCalls + 1;
}

Em resumo: numSysCalls deve ser incrementadosempre que um syscall (de qualquer tipo) é chamado - bem-sucedido ou não.

numSys retorna apenas o número ou -1 se houver erro.

questionAnswers(0)

yourAnswerToTheQuestion