1i#define WANT_M./edf.*Admitted/,/edfrecord/d/edfstop/,/edf = nil/d,s/(!p->edf)/(1)/,s/edfready(p)/0/g/edflock/,/edfunlock/+1dg/edfstop(up)/d,s/(p = procalloc.free)/(&)/,s/lock(runq)/lock(\&runq->lk)/,s/lock(\&procalloc)/lock(\&procalloc.lk)/,s/lock(r)/lock(\&r->lk)//^newproc/ s/^///^ return p/i vxnewproc(p);./^twakeup/ s/Ureg\*,/Ureg *ureg,/,s/up->tt/up->timer.tt/g,s/up->tns/up->timer.tns/g,s/up->tf/up->timer.tf/g,s/up->timer.tfn/up->tfn/g,s/up->ta/up->timer.ta/g,s/up->tmode/up->timer.tmode/g,s/timeradd(up)/timeradd(\&up->timer)/g,s/timerdel(up)/timerdel(\&up->timer)/g,s/up->twhen/up->timer.twhen/g,s/lock(p->rgrp)/lock(\&p->rgrp->ref.lk)/,s/Lock;/Lock lk;/g,s/lock(\&broken)/lock(\&broken.lk)/g,s/MACHP(0)->ticks/msec()/g,s/lock(\&palloc)/lock(\&palloc.lk)/g,s/ref(p->dot)/ref(\&p->dot->ref)/g,s/ref(kpgrp)/ref(\&kpgrp->ref)/gg/"edf.h"/dg/Edf/d,s;\.Lock\.;.lk.;g/^schedinit/ s/^/// setlabel(\&m->sched)/a if(traceprocs) // Plan 9 VX print("schedinit %p %p %s\n", m, up, up ? up->text : "");./^sched(void)/+3a if(traceprocs) // Plan 9 VX print("sched %p %p [%s]\n", m, up, up ? up->text : "");./if(setlabel(\&up->sched))/a if(traceprocs) print("sched %p %p: awake\n", m, up);./^ }/a if(traceprocs) print("sched %p %p: entering scheduler\n", m, up);./^ }/a if(traceprocs) print("sched %p %p: runproc", m, up);.,s/m->ticks/msec()/g/^ mmuswitch(up)/i if(traceprocs) print("run %p %p [%s]\n", m, up, up->text);./^ready/ s/^/_//^runproc/ s/^/_//never mind/+1a if(traceprocs) print("sleep %p %p: already happened\n", m, up);./if(setlabel(\&up->sched))/a if(traceprocs) print("sleep %p %p: awake\n", m, up);./} else {/a if(traceprocs) print("sleep %p %p: sleeping\n", m, up);./p->fpsave = up->fpsave/,/p->dbgreg = 0/c if(up){ p->fpsave = up->fpsave; p->scallnr = up->scallnr; p->s = up->s; p->slash = up->slash; p->dot = up->dot; if(p->dot) incref(&p->dot->ref); memmove(p->note, up->note, sizeof(p->note)); p->nnote = up->nnote; p->lastnote = up->lastnote; p->notify = up->notify; } p->notified = 0; p->ureg = 0; p->dbgreg = 0; p->nerrlab = 0;./^ ready(p)/+1,/flushmmu/d/^newproc/ s/^///p->procctl = 0;/c if(up && up->procctl == Proc_tracesyscall) p->procctl = Proc_tracesyscall; else p->procctl = 0; p->syscalltrace = 0;./up->alarm = 0;/i if(up->syscalltrace) free(up->syscalltrace);./p = newproc();/i extern int tracekdev; if(tracekdev) iprint("kproc %s\n", name); .
1i
#define WANT_M
.
/edf.*Admitted/,/edfrecord/d
/edfstop/,/edf = nil/d
,s/(!p->edf)/(1)/
,s/edfready(p)/0/g
/edflock/,/edfunlock/+1d
g/edfstop(up)/d
,s/(p = procalloc.free)/(&)/
,s/lock(runq)/lock(\&runq->lk)/
,s/lock(\&procalloc)/lock(\&procalloc.lk)/
,s/lock(r)/lock(\&r->lk)/
/^newproc/ s/^//
/^ return p/i
vxnewproc(p);
.
/^twakeup/ s/Ureg\*,/Ureg *ureg,/
,s/up->tt/up->timer.tt/g
,s/up->tns/up->timer.tns/g
,s/up->tf/up->timer.tf/g
,s/up->timer.tfn/up->tfn/g
,s/up->ta/up->timer.ta/g
,s/up->tmode/up->timer.tmode/g
,s/timeradd(up)/timeradd(\&up->timer)/g
,s/timerdel(up)/timerdel(\&up->timer)/g
,s/up->twhen/up->timer.twhen/g
,s/lock(p->rgrp)/lock(\&p->rgrp->ref.lk)/
,s/Lock;/Lock lk;/g
,s/lock(\&broken)/lock(\&broken.lk)/g
,s/MACHP(0)->ticks/msec()/g
,s/lock(\&palloc)/lock(\&palloc.lk)/g
,s/ref(p->dot)/ref(\&p->dot->ref)/g
,s/ref(kpgrp)/ref(\&kpgrp->ref)/g
g/"edf.h"/d
g/Edf/d
,s;\.Lock\.;.lk.;g
/^schedinit/ s/^//
/ setlabel(\&m->sched)/a
if(traceprocs) // Plan 9 VX
print("schedinit %p %p %s\n", m, up, up ? up->text : "");
.
/^sched(void)/+3a
if(traceprocs) // Plan 9 VX
print("sched %p %p [%s]\n", m, up, up ? up->text : "");
.
/if(setlabel(\&up->sched))/a
if(traceprocs)
print("sched %p %p: awake\n", m, up);
.
/^ }/a
if(traceprocs)
print("sched %p %p: entering scheduler\n", m, up);
.
/^ }/a
if(traceprocs)
print("sched %p %p: runproc", m, up);
.
,s/m->ticks/msec()/g
/^ mmuswitch(up)/i
if(traceprocs)
print("run %p %p [%s]\n", m, up, up->text);
.
/^ready/ s/^/_/
/^runproc/ s/^/_/
/never mind/+1a
if(traceprocs)
print("sleep %p %p: already happened\n", m, up);
.
/if(setlabel(\&up->sched))/a
if(traceprocs)
print("sleep %p %p: awake\n", m, up);
.
/} else {/a
if(traceprocs)
print("sleep %p %p: sleeping\n", m, up);
.
/p->fpsave = up->fpsave/,/p->dbgreg = 0/c
if(up){
p->fpsave = up->fpsave;
p->scallnr = up->scallnr;
p->s = up->s;
p->slash = up->slash;
p->dot = up->dot;
if(p->dot)
incref(&p->dot->ref);
memmove(p->note, up->note, sizeof(p->note));
p->nnote = up->nnote;
p->lastnote = up->lastnote;
p->notify = up->notify;
}
p->notified = 0;
p->ureg = 0;
p->dbgreg = 0;
p->nerrlab = 0;
.
/^ ready(p)/+1,/flushmmu/d
/^newproc/ s/^//
/p->procctl = 0;/c
if(up && up->procctl == Proc_tracesyscall)
p->procctl = Proc_tracesyscall;
else
p->procctl = 0;
p->syscalltrace = 0;
.
/up->alarm = 0;/i
if(up->syscalltrace)
free(up->syscalltrace);
.
/p = newproc();/i
extern int tracekdev;
if(tracekdev)
iprint("kproc %s\n", name);
.