diff options
-rw-r--r-- | rts/Threads.c | 14 | ||||
-rw-r--r-- | rts/Threads.h | 1 |
2 files changed, 15 insertions, 0 deletions
diff --git a/rts/Threads.c b/rts/Threads.c index b36b4ddb81..ff57e5e3f0 100644 --- a/rts/Threads.c +++ b/rts/Threads.c @@ -1007,6 +1007,20 @@ printAllThreads(void) } } +void +printGlobalThreads(void) +{ + for (uint32_t g = 0; g < RtsFlags.GcFlags.generations; g++) { + debugBelch("\ngen %d\n", g); + for (StgTSO *t = generations[g].threads; t != END_TSO_QUEUE; t = t->global_link) { + debugBelch("thread %p (id=%lu)\n", t, t->id); + } + for (StgTSO *t = generations[g].old_threads; t != END_TSO_QUEUE; t = t->global_link) { + debugBelch("thread %p (id=%lu) (old)\n", t, t->id); + } + } +} + // useful from gdb void printThreadQueue(StgTSO *t) diff --git a/rts/Threads.h b/rts/Threads.h index c0a9f1cf1c..b74ac1381d 100644 --- a/rts/Threads.h +++ b/rts/Threads.h @@ -46,6 +46,7 @@ bool performTryPutMVar(Capability *cap, StgMVar *mvar, StgClosure *value); void printThreadBlockage (StgTSO *tso); void printThreadStatus (StgTSO *t); void printAllThreads (void); +void printGlobalThreads(void); void printThreadQueue (StgTSO *t); #endif |