2021-10-15から1日間の記事一覧

proc.c static void wakeup1(void *chan)

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 void wakeup(void *chan)

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で指定された待機チ…

proc.c struct cpu* mycpu(void)

トップページ 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()…

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構造体を指定するインデックスを取…

proc.c struct proc* myproc(void)

トップページ 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関数は、…

proc.c void sched(void)

トップページ 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 …

proc.c void scheduler(void)

トップページ 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(…

proc.c static struct proc* allocproc(void)

トップページ 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]…