2021-10-15から1日間の記事一覧
proc.c https://github.com/mit-pdos/xv6-public/blob/master/proc.c#L457 static void wakeup1(void *chan) { struct proc *p; for(p = ptable.proc; p < &ptable.proc[NPROC]; p++) if(p->state == SLEEPING && p->chan == chan) p->state = RUNNABLE; }wa…
proc.c https://github.com/mit-pdos/xv6-public/blob/master/proc.c#L468 void wakeup(void *chan) { acquire(&ptable.lock); wakeup1(chan); release(&ptable.lock); }wakeup関数は、SLEEPING状態になっているプロセスのうち、引数chanで指定された待機チ…
トップページ jupiteroak.hatenablog.com proc.c https://github.com/mit-pdos/xv6-public/blob/master/proc.c#L37 struct cpu* mycpu(void) { int apicid, i; if(readeflags()&FL_IF) panic("mycpu called with interrupts enabled\n"); apicid = lapicid()…
トップページ jupiteroak.hatenablog.com proc.c https://github.com/mit-pdos/xv6-public/blob/master/proc.c#L30 int cpuid() { return mycpu()-cpus; }cpuid関数は、この関数を現在実行しているプロセッサに対応したcpu構造体を指定するインデックスを取…
トップページ jupiteroak.hatenablog.com proc.c https://github.com/mit-pdos/xv6-public/blob/master/proc.c#L57 struct proc* myproc(void) { struct cpu *c; struct proc *p; pushcli(); c = mycpu(); p = c->proc; popcli(); return p; }myproc関数は、…
トップページ jupiteroak.hatenablog.com proc.c https://github.com/mit-pdos/xv6-public/blob/master/proc.c#L365 void sched(void) { int intena; struct proc *p = myproc(); if(!holding(&ptable.lock)) panic("sched ptable.lock"); if(mycpu()->ncli …
トップページ jupiteroak.hatenablog.com proc.c https://github.com/mit-pdos/xv6-public/blob/master/proc.c#L322 void scheduler(void) { struct proc *p; struct cpu *c = mycpu(); c->proc = 0; for(;;){ // Enable interrupts on this processor. sti(…
トップページ jupiteroak.hatenablog.com proc.c https://github.com/mit-pdos/xv6-public/blob/master/proc.c#L73 static struct proc* allocproc(void) { struct proc *p; char *sp; acquire(&ptable.lock); for(p = ptable.proc; p < &ptable.proc[NPROC]…