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 ならではでしょうな。

続きを読む