如何在xv6中检索系统调用的名称?

时间:2015-02-26 02:24:15

标签: system-calls xv6

有没有办法检索在syscall()中进行的系统调用的名称?我看到我们可以访问该号码;我能以某种方式使用它吗?

1 个答案:

答案 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