From c9896e2edba3bf17061447f3491a866a74e2cbb9 Mon Sep 17 00:00:00 2001 From: rsc Date: Sun, 23 May 2004 00:58:00 +0000 Subject: be careful about not switching to procs unless necessary. --- acid/thread | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'acid') diff --git a/acid/thread b/acid/thread index af3764b5..5b5337e0 100644 --- a/acid/thread +++ b/acid/thread @@ -81,11 +81,15 @@ defn stkignore(s){ } 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({}); - else + if mainpid != P.pid then setproc(mainpid); + } else stk = strace(label(T.sched)); stop = 0; @@ -151,7 +155,6 @@ defn pthreads(P){ local T, Tq, mainpid; mainpid = pid; -// setproc(P.pid); Tq = (Tqueue)P.threads; T = (Thread)Tq.$head; while T != 0 do{ @@ -159,7 +162,6 @@ defn pthreads(P){ thread(T); T = (Thread)T.nextt; } -// setproc(mainpid); } defn threads(){ @@ -305,7 +307,11 @@ defn threadstk(T){ // setproc(P.pid); if T.state == Running then{ + if P.pid != mainpid then + setproc(P.pid); stk(); + if P.pid != mainpid then + setproc(mainpid); } else { labstk(T.sched); } -- cgit v1.2.3