有没有办法检索在syscall()中进行的系统调用的名称?我看到我们可以访问该号码;我能以某种方式使用它吗?
答案 0 :(得分:1)
如果你想要一个字符串,你必须拥有一个系统调用名称数组。
您可以syscall.c
syscalls[]
执行此操作,只需static char* syscallnames[] = {
[SYS_fork] "fork",
[SYS_exit] "exit",
[SYS_wait] "wait",
...
};
:
syscall()
并在void
syscall(void)
{
int num;
num = proc->tf->eax;
if(num > 0 && num < NELEM(syscalls) && syscalls[num]) {
cprintf("calling sys call: %s", syscallnames[num]); // <<< code addition
proc->tf->eax = syscalls[num]();
} else {
cprintf("%d %s: unknown sys call %d\n",
proc->pid, proc->name, num);
proc->tf->eax = -1;
}
}
中使用它,如下所示:
java.util.Hastable