OSの起動後にシステムコールの数を見つけるための簡単な「C」プログラムを書きたいです。私は fork() や getpid() などの他のシステム コールに従っており、基本的にそれらのほとんどをコピーしています。どこで、いつカウンターを増やせばよいかわかりません。例はありますか?
kernel/syscall.c でカウンターを定義し、それに応じてインクリメントするのは良い考えですか?
void
syscall(void)
{
int num;
counter++; //mona
num = proc->tf->eax;
if(num > 0 && num < NELEM(syscalls) && syscalls[num] != NULL) {
proc->tf->eax = syscalls[num]();
} else {
cprintf("%d %s: unknown sys call %d\n",
proc->pid, proc->name, num);
proc->tf->eax = -1;
}
}
また、これまでのところ、kernel/sysproc.c で簡単なシステム コール用に取得したコードを次に示します。
sys_getsyscallinfo(void)
{
return counter; //mona
}
ただし、次のエラーが表示されます。
kernel/sysproc.c: In function ‘sys_getsyscallinfo’:
kernel/sysproc.c:48: error: ‘counter’ undeclared (first use in this function)
kernel/sysproc.c:48: error: (Each undeclared identifier is reported only once
kernel/sysproc.c:48: error: for each function it appears in.)
make: *** [kernel/sysproc.o] Error 1