be careful about not switching to procs unless necessary.

This commit is contained in:
rsc 2004-05-23 00:58:00 +00:00
parent 1c39bb5919
commit c9896e2edb

View file

@ -81,11 +81,15 @@ defn stkignore(s){
} }
defn threadstkline(T){ defn threadstkline(T){
local stk, frame, pc, pc0, file, s, sym, i, stop; local stk, frame, pc, pc0, file, s, sym, i, stop, P, mainpid;
if T.state == Running then if T.state == Running then {
P = (Proc)T.proc;
mainpid = pid;
if mainpid != P.pid then setproc(P.pid);
stk = strace({}); stk = strace({});
else if mainpid != P.pid then setproc(mainpid);
} else
stk = strace(label(T.sched)); stk = strace(label(T.sched));
stop = 0; stop = 0;
@ -151,7 +155,6 @@ defn pthreads(P){
local T, Tq, mainpid; local T, Tq, mainpid;
mainpid = pid; mainpid = pid;
// setproc(P.pid);
Tq = (Tqueue)P.threads; Tq = (Tqueue)P.threads;
T = (Thread)Tq.$head; T = (Thread)Tq.$head;
while T != 0 do{ while T != 0 do{
@ -159,7 +162,6 @@ defn pthreads(P){
thread(T); thread(T);
T = (Thread)T.nextt; T = (Thread)T.nextt;
} }
// setproc(mainpid);
} }
defn threads(){ defn threads(){
@ -305,7 +307,11 @@ defn threadstk(T){
// setproc(P.pid); // setproc(P.pid);
if T.state == Running then{ if T.state == Running then{
if P.pid != mainpid then
setproc(P.pid);
stk(); stk();
if P.pid != mainpid then
setproc(mainpid);
} else { } else {
labstk(T.sched); labstk(T.sched);
} }