xv6 agrega una llamada al sistema que cuenta las llamadas al sistema

EDITAR:

ENTENDIDO

Aquí esta lo que hice:

en syscall.c:

extern int numSysCalls;

en sysproc.c:

int numSysCalls = -1;

Bien, estoy trabajando en implementar una llamada fácil al sistema que devuelva el número de veces que se ha realizado una llamada al sistema. Parece fácil, pero recibo un error que no entiendo ...

Básicamente, esto es lo que hice: en syscall.c hay una función llamada syscall () que comprueba si es una llamada al sistema o no. Básicamente, he declarado una variable y la estoy incrementando cada vez que se llama a esta función.

Declaración de Var en syscall.c:

18: int16_t numSysCalls = -1; //global

Función Syscall ():

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

Error que estoy recibiendo:

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

Luego, en sysproc.c, tengo el mismo int externo y simplemente devuelvo el int cuando llamo a mi función numCalls, de la siguiente manera:

Variable externa en sysproc.c:

extern int numSysCalls;

Método en cuestión:

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

En resumen: numSysCalls debe incrementarsecuando se llama una llamada al sistema (de cualquier tipo), exitosa o no.

numSys solo devuelve el número, o -1 si se produce un error.