be careful about not switching to procs unless necessary.
This commit is contained in:
parent
1c39bb5919
commit
c9896e2edb
1 changed files with 11 additions and 5 deletions
16
acid/thread
16
acid/thread
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue