proc.c int cpuid()

トップページ
jupiteroak.hatenablog.com


proc.c
https://github.com/mit-pdos/xv6-public/blob/master/proc.c#L30

int cpuid() {
  return mycpu()-cpus;
}

cpuid関数は、この関数を現在実行しているプロセッサに対応したcpu構造体を指定するインデックスを取得します。

戻り値 int mycpu()-cpus
この関数を現在実行しているプロセッサに対応したcpu構造体を指定するインデックスです。

処理の内容

return mycpu()-cpus; 

mycpu関数の戻り値であるcpu構造体のアドレスは、&(cpus[i])となります(iは配列cpusにおけるインデックス)。
アドレス値&(cpus[i])→cpus+iより、mycpu()-cpus → &(cpus[i]) - cpus → cpus+i - i → i となります。