6.828: Operating System Engineering (83)
Required reading: xv6 trapasm.S, trap.c, syscall.c, initcode.S, usys.S. Skim vectors.S, lapic.c, ioapic.c, picirq.c.
とのことなのですが、まだ目を通していないソースファイルがありますね。確認してみます。
6.828: Operating System Engineering (84)
ユーザプロセスからシステムコールを呼び出した時に、例えば fork だとプロセス id が戻ってくるのか。
pid_t fork(void);
なんとなく malloc と勘違いしてたのは秘密w
戻り値
ここだな。syscall.c で定義されてる syscall 手続きの以下。
num = proc->tf->eax; if(num >= 0 && num < NELEM(syscalls) && syscalls[num]) proc->tf->eax = syscalls[num]();
trapframe の eax に渡せば user なプロセスの戻りになるはず。なんか答えに簡単に到達したのですが、これは xv6-rev5 ならではでしょうな。