“ os161 ”操作系统包含以下代码。具体来说,定义系统调用的位置:
...
#include <kern/syscall.h>
...
#define SYSCALL(sym, num) \
.set noreorder ; \
.globl sym ; \
.type sym,@function ; \
.ent sym ; \
sym: ; \
j __syscall ; \
addiu v0, $0, SYS_##sym ; \
.end sym ; \
.set reorder
...
SYSCALL(fork, 0)
SYSCALL(vfork, 1)
SYSCALL(execv, 2)
SYSCALL(_exit, 3)
SYSCALL(waitpid, 4)
SYSCALL(getpid, 5)
...
在底部,每个系统调用都有一个数字。我似乎无法弄清楚这些数字的用途。
我不是在询问系统调用号的使用,我是在询问使用num
宏的参数SYSCALL
。我找不到它在哪里使用。
即使将系统调用号移至,也不使用v0
该参数。num
相反,它移动文件中定义的常量kern/syscall.h
:
...
#define SYS_fork 0
#define SYS_vfork 1
#define SYS_execv 2
#define SYS__exit 3
#define SYS_waitpid 4
#define SYS_getpid 5
...
这个论点如何num
以某种方式有用?