kernel: remove implicit Proc* argument from procctl()
procctl() is always called with up and it would not work correctly if passed a different process, so remove the Proc* argument and use up directly.
This commit is contained in:
parent
1ffcdbab88
commit
b18a641397
|
@ -519,7 +519,7 @@ notify(Ureg *ur)
|
|||
Note *n;
|
||||
|
||||
if(up->procctl)
|
||||
procctl(up);
|
||||
procctl();
|
||||
if(up->nnote == 0)
|
||||
return 0;
|
||||
|
||||
|
|
|
@ -679,7 +679,7 @@ notify(Ureg* ureg)
|
|||
Note *n;
|
||||
|
||||
if(up->procctl)
|
||||
procctl(up);
|
||||
procctl();
|
||||
if(up->nnote == 0)
|
||||
return 0;
|
||||
|
||||
|
|
|
@ -104,7 +104,7 @@ notify(Ureg* ureg)
|
|||
NFrame *nf;
|
||||
|
||||
if(up->procctl)
|
||||
procctl(up);
|
||||
procctl();
|
||||
if(up->nnote == 0)
|
||||
return 0;
|
||||
|
||||
|
@ -210,7 +210,7 @@ syscall(Ureg* ureg)
|
|||
syscallfmt(scallnr, ureg->pc, (va_list)up->s.args);
|
||||
s = splhi();
|
||||
up->procctl = Proc_stopme;
|
||||
procctl(up);
|
||||
procctl();
|
||||
splx(s);
|
||||
startns = todget(nil);
|
||||
}
|
||||
|
@ -253,7 +253,7 @@ syscall(Ureg* ureg)
|
|||
sysretfmt(scallnr, (va_list)up->s.args, ret, startns, stopns);
|
||||
s = splhi();
|
||||
up->procctl = Proc_stopme;
|
||||
procctl(up);
|
||||
procctl();
|
||||
splx(s);
|
||||
}
|
||||
|
||||
|
|
|
@ -701,7 +701,7 @@ notify(Ureg* ur)
|
|||
Note *n;
|
||||
|
||||
if(up->procctl)
|
||||
procctl(up);
|
||||
procctl();
|
||||
if(up->nnote == 0)
|
||||
return 0;
|
||||
|
||||
|
|
|
@ -104,7 +104,7 @@ notify(Ureg* ureg)
|
|||
NFrame *nf;
|
||||
|
||||
if(up->procctl)
|
||||
procctl(up);
|
||||
procctl();
|
||||
if(up->nnote == 0)
|
||||
return 0;
|
||||
|
||||
|
@ -196,7 +196,7 @@ syscall(Ureg* ureg)
|
|||
|
||||
if(up->procctl == Proc_tracesyscall){
|
||||
up->procctl = Proc_stopme;
|
||||
procctl(up);
|
||||
procctl();
|
||||
}
|
||||
|
||||
scallnr = ureg->r0;
|
||||
|
@ -247,9 +247,9 @@ syscall(Ureg* ureg)
|
|||
ureg->r0 = ret;
|
||||
|
||||
if(up->procctl == Proc_tracesyscall){
|
||||
up->procctl = Proc_stopme;
|
||||
s = splhi();
|
||||
procctl(up);
|
||||
up->procctl = Proc_stopme;
|
||||
procctl();
|
||||
splx(s);
|
||||
}
|
||||
|
||||
|
|
|
@ -140,7 +140,7 @@ notify(Ureg *ureg)
|
|||
Note *n;
|
||||
|
||||
if(up->procctl)
|
||||
procctl(up);
|
||||
procctl();
|
||||
if(up->nnote == 0)
|
||||
return 0;
|
||||
s = spllo();
|
||||
|
@ -337,7 +337,7 @@ syscall(Ureg *ureg)
|
|||
syscallfmt(scall, ureg->pc, (va_list)up->s.args);
|
||||
s = splhi();
|
||||
up->procctl = Proc_stopme;
|
||||
procctl(up);
|
||||
procctl();
|
||||
splx(s);
|
||||
startns = todget(nil);
|
||||
}
|
||||
|
@ -362,7 +362,7 @@ syscall(Ureg *ureg)
|
|||
sysretfmt(scall, (va_list)up->s.args, ret, startns, stopns);
|
||||
s = splhi();
|
||||
up->procctl = Proc_stopme;
|
||||
procctl(up);
|
||||
procctl();
|
||||
splx(s);
|
||||
}
|
||||
|
||||
|
|
|
@ -743,7 +743,7 @@ syscall(Ureg* ureg)
|
|||
syscallfmt(scallnr, ureg->pc, (va_list)up->s.args);
|
||||
s = splhi();
|
||||
up->procctl = Proc_stopme;
|
||||
procctl(up);
|
||||
procctl();
|
||||
splx(s);
|
||||
startns = todget(nil);
|
||||
}
|
||||
|
@ -786,7 +786,7 @@ syscall(Ureg* ureg)
|
|||
sysretfmt(scallnr, (va_list)up->s.args, ret, startns, stopns);
|
||||
s = splhi();
|
||||
up->procctl = Proc_stopme;
|
||||
procctl(up);
|
||||
procctl();
|
||||
splx(s);
|
||||
}
|
||||
|
||||
|
@ -818,7 +818,7 @@ notify(Ureg* ureg)
|
|||
Note *n;
|
||||
|
||||
if(up->procctl)
|
||||
procctl(up);
|
||||
procctl();
|
||||
if(up->nnote == 0)
|
||||
return 0;
|
||||
|
||||
|
|
|
@ -705,7 +705,7 @@ syscall(Ureg* ureg)
|
|||
syscallfmt(scallnr, ureg->pc, (va_list)up->s.args);
|
||||
s = splhi();
|
||||
up->procctl = Proc_stopme;
|
||||
procctl(up);
|
||||
procctl();
|
||||
splx(s);
|
||||
startns = todget(nil);
|
||||
}
|
||||
|
@ -745,7 +745,7 @@ syscall(Ureg* ureg)
|
|||
sysretfmt(scallnr, (va_list)up->s.args, ret, startns, stopns);
|
||||
s = splhi();
|
||||
up->procctl = Proc_stopme;
|
||||
procctl(up);
|
||||
procctl();
|
||||
splx(s);
|
||||
}
|
||||
|
||||
|
@ -789,7 +789,7 @@ notify(Ureg* ureg)
|
|||
Note *n;
|
||||
|
||||
if(up->procctl)
|
||||
procctl(up);
|
||||
procctl();
|
||||
if(up->nnote == 0)
|
||||
return 0;
|
||||
|
||||
|
|
|
@ -47,7 +47,7 @@ fault(uintptr addr, int read)
|
|||
switch(up->procctl){
|
||||
case Proc_exitme:
|
||||
case Proc_exitbig:
|
||||
procctl(up);
|
||||
procctl();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -222,7 +222,7 @@ int preempted(void);
|
|||
void prflush(void);
|
||||
void printinit(void);
|
||||
ulong procalarm(ulong);
|
||||
void procctl(Proc*);
|
||||
void procctl(void);
|
||||
void procdump(void);
|
||||
int procfdprint(Chan*, int, int, char*, int);
|
||||
void procflushseg(Segment*);
|
||||
|
|
|
@ -1420,12 +1420,12 @@ kproc(char *name, void (*func)(void *), void *arg)
|
|||
* reasoning.
|
||||
*/
|
||||
void
|
||||
procctl(Proc *p)
|
||||
procctl(void)
|
||||
{
|
||||
char *state;
|
||||
ulong s;
|
||||
|
||||
switch(p->procctl) {
|
||||
switch(up->procctl) {
|
||||
case Proc_exitbig:
|
||||
spllo();
|
||||
pprint("Killed: Insufficient physical memory\n");
|
||||
|
@ -1436,26 +1436,26 @@ procctl(Proc *p)
|
|||
pexit("Killed", 1);
|
||||
|
||||
case Proc_traceme:
|
||||
if(p->nnote == 0)
|
||||
if(up->nnote == 0)
|
||||
return;
|
||||
/* No break */
|
||||
|
||||
case Proc_stopme:
|
||||
p->procctl = 0;
|
||||
state = p->psstate;
|
||||
p->psstate = "Stopped";
|
||||
up->procctl = 0;
|
||||
state = up->psstate;
|
||||
up->psstate = "Stopped";
|
||||
/* free a waiting debugger */
|
||||
s = spllo();
|
||||
qlock(&p->debug);
|
||||
if(p->pdbg != nil) {
|
||||
wakeup(&p->pdbg->sleep);
|
||||
p->pdbg = nil;
|
||||
qlock(&up->debug);
|
||||
if(up->pdbg != nil) {
|
||||
wakeup(&up->pdbg->sleep);
|
||||
up->pdbg = nil;
|
||||
}
|
||||
qunlock(&p->debug);
|
||||
qunlock(&up->debug);
|
||||
splhi();
|
||||
p->state = Stopped;
|
||||
up->state = Stopped;
|
||||
sched();
|
||||
p->psstate = state;
|
||||
up->psstate = state;
|
||||
splx(s);
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -706,7 +706,7 @@ notify(Ureg* ur)
|
|||
Note *n;
|
||||
|
||||
if(up->procctl)
|
||||
procctl(up);
|
||||
procctl();
|
||||
if(up->nnote == 0)
|
||||
return 0;
|
||||
|
||||
|
|
|
@ -110,7 +110,7 @@ notify(Ureg* ureg)
|
|||
NFrame *nf;
|
||||
|
||||
if(up->procctl)
|
||||
procctl(up);
|
||||
procctl();
|
||||
if(up->nnote == 0)
|
||||
return 0;
|
||||
|
||||
|
@ -221,7 +221,7 @@ syscall(Ureg* ureg)
|
|||
|
||||
syscallfmt(scallnr, ureg->pc, (va_list)(sp+BY2WD));
|
||||
up->procctl = Proc_stopme;
|
||||
procctl(up);
|
||||
procctl();
|
||||
if (up->syscalltrace)
|
||||
free(up->syscalltrace);
|
||||
up->syscalltrace = nil;
|
||||
|
@ -274,10 +274,10 @@ syscall(Ureg* ureg)
|
|||
|
||||
if(up->procctl == Proc_tracesyscall){
|
||||
stopns = todget(nil);
|
||||
up->procctl = Proc_stopme;
|
||||
sysretfmt(scallnr, (va_list)(sp+BY2WD), ret, startns, stopns);
|
||||
s = splhi();
|
||||
procctl(up);
|
||||
up->procctl = Proc_stopme;
|
||||
procctl();
|
||||
splx(s);
|
||||
if(up->syscalltrace)
|
||||
free(up->syscalltrace);
|
||||
|
|
|
@ -690,7 +690,7 @@ syscall(Ureg* ureg)
|
|||
|
||||
if(up->procctl == Proc_tracesyscall){
|
||||
up->procctl = Proc_stopme;
|
||||
procctl(up);
|
||||
procctl();
|
||||
}
|
||||
|
||||
scallnr = ureg->ax;
|
||||
|
@ -746,9 +746,9 @@ syscall(Ureg* ureg)
|
|||
ureg->ax = ret;
|
||||
|
||||
if(up->procctl == Proc_tracesyscall){
|
||||
up->procctl = Proc_stopme;
|
||||
s = splhi();
|
||||
procctl(up);
|
||||
up->procctl = Proc_stopme;
|
||||
procctl();
|
||||
splx(s);
|
||||
}
|
||||
|
||||
|
@ -781,7 +781,7 @@ notify(Ureg* ureg)
|
|||
Note *n;
|
||||
|
||||
if(up->procctl)
|
||||
procctl(up);
|
||||
procctl();
|
||||
if(up->nnote == 0)
|
||||
return 0;
|
||||
|
||||
|
|
Loading…
Reference in a new issue