有没有办法检索在 syscall() 中进行的系统调用的名称?我看到我们可以访问该号码;我可以以某种方式使用它吗?
问问题
2755 次
1 回答
5
如果你想要一个字符串,你必须保存一个系统调用名称数组。你可以这样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;
}
}
于 2015-04-27T10:32:20.157 回答