Add event block markers
[ghc-hetmet.git] / rts / Trace.c
index eee3554..20debdc 100644 (file)
 #include "Threads.h"
 #include "Printer.h"
 
-StgWord32 classes_enabled; // not static due to inline funcs
+// debugging flags, set with +RTS -D<something>
+int DEBUG_sched;
+int DEBUG_interp;
+int DEBUG_weak;
+int DEBUG_gccafs;
+int DEBUG_gc;
+int DEBUG_block_alloc;
+int DEBUG_sanity;
+int DEBUG_stable;
+int DEBUG_stm;
+int DEBUG_prof;
+int DEBUG_gran;
+int DEBUG_par;
+int DEBUG_linker;
+int DEBUG_squeeze;
+int DEBUG_hpc;
+int DEBUG_sparks;
+
+// events
+int TRACE_sched;
 
 #ifdef THREADED_RTS
 static Mutex trace_utx;
@@ -37,7 +56,7 @@ void initTracing (void)
 
 #ifdef DEBUG
 #define DEBUG_FLAG(name, class) \
-    if (RtsFlags.DebugFlags.name) classes_enabled |= class;
+    class = RtsFlags.DebugFlags.name ? 1 : 0;
 
     DEBUG_FLAG(scheduler,    DEBUG_sched);
     DEBUG_FLAG(scheduler,    TRACE_sched); // -Ds enabled all sched events
@@ -58,7 +77,7 @@ void initTracing (void)
 #endif
 
 #define TRACE_FLAG(name, class) \
-    if (RtsFlags.TraceFlags.name) classes_enabled |= class;
+    class = RtsFlags.TraceFlags.name ? 1 : 0;
 
     TRACE_FLAG(scheduler, TRACE_sched);
 
@@ -112,40 +131,41 @@ static void traceSchedEvent_stderr (Capability *cap, EventTypeNum tag,
     tracePreface();
     switch (tag) {
     case EVENT_CREATE_THREAD:   // (cap, thread)
-        debugBelch("cap %d: created thread %ld\n", cap->no, tso->id);
+        debugBelch("cap %d: created thread %lu\n", 
+                   cap->no, (lnat)tso->id);
         break;
     case EVENT_RUN_THREAD:      //  (cap, thread)
-        debugBelch("cap %d: running thread %ld (%s)\n", cap->no, 
-                   tso->id, what_next_strs[tso->what_next]);
+        debugBelch("cap %d: running thread %lu (%s)\n", 
+                   cap->no, (lnat)tso->id, what_next_strs[tso->what_next]);
         break;
     case EVENT_THREAD_RUNNABLE: // (cap, thread)
-        debugBelch("cap %d: thread %ld appended to run queue\n", 
-                   cap->no, tso->id);
+        debugBelch("cap %d: thread %lu appended to run queue\n", 
+                   cap->no, (lnat)tso->id);
         break;
     case EVENT_RUN_SPARK:       // (cap, thread)
-        debugBelch("cap %d: thread %ld running a spark\n", 
-                   cap->no, tso->id);
+        debugBelch("cap %d: thread %lu running a spark\n", 
+                   cap->no, (lnat)tso->id);
         break;
     case EVENT_CREATE_SPARK_THREAD: // (cap, spark_thread)
-        debugBelch("cap %d: creating spark thread %ld\n", 
+        debugBelch("cap %d: creating spark thread %lu\n", 
                    cap->no, (long)other);
         break;
     case EVENT_MIGRATE_THREAD:  // (cap, thread, new_cap)
-        debugBelch("cap %d: thread %ld migrating to cap %d\n", 
-                   cap->no, tso->id, (int)other);
+        debugBelch("cap %d: thread %lu migrating to cap %d\n", 
+                   cap->no, (lnat)tso->id, (int)other);
         break;
     case EVENT_STEAL_SPARK:     // (cap, thread, victim_cap)
-        debugBelch("cap %d: thread %ld stealing a spark from cap %d\n", 
-                   cap->no, tso->id, (int)other);
+        debugBelch("cap %d: thread %lu stealing a spark from cap %d\n", 
+                   cap->no, (lnat)tso->id, (int)other);
         break;
     case EVENT_THREAD_WAKEUP:   // (cap, thread, other_cap)
-        debugBelch("cap %d: waking up thread %ld on cap %d\n", 
-                   cap->no, tso->id, (int)other);
+        debugBelch("cap %d: waking up thread %lu on cap %d\n", 
+                   cap->no, (lnat)tso->id, (int)other);
         break;
         
     case EVENT_STOP_THREAD:     // (cap, thread, status)
-        debugBelch("cap %d: thread %ld stopped (%s)\n", 
-                   cap->no, tso->id, thread_stop_reasons[other]);
+        debugBelch("cap %d: thread %lu stopped (%s)\n", 
+                   cap->no, (lnat)tso->id, thread_stop_reasons[other]);
         break;
     case EVENT_SHUTDOWN:        // (cap)
         debugBelch("cap %d: shutting down\n", cap->no);
@@ -163,7 +183,8 @@ static void traceSchedEvent_stderr (Capability *cap, EventTypeNum tag,
         debugBelch("cap %d: finished GC\n", cap->no);
         break;
     default:
-        debugBelch("cap %2d: thread %ld: event %d\n\n", cap->no, tso->id, tag);
+        debugBelch("cap %2d: thread %lu: event %d\n\n", 
+                   cap->no, (lnat)tso->id, tag);
         break;
     }
 
@@ -198,8 +219,11 @@ static void traceCap_stderr(Capability *cap, char *msg, va_list ap)
 }
 #endif
 
-void traceCap_(Capability *cap, char *msg, va_list ap)
+void traceCap_(Capability *cap, char *msg, ...)
 {
+    va_list ap;
+    va_start(ap,msg);
+    
 #ifdef DEBUG
     if (RtsFlags.TraceFlags.trace_stderr) {
         traceCap_stderr(cap, msg, ap);
@@ -208,6 +232,8 @@ void traceCap_(Capability *cap, char *msg, va_list ap)
     {
         postCapMsg(cap, msg, ap);
     }
+
+    va_end(ap);
 }
 
 #ifdef DEBUG
@@ -223,8 +249,11 @@ static void trace_stderr(char *msg, va_list ap)
 }
 #endif
 
-void trace_(char *msg, va_list ap)
+void trace_(char *msg, ...)
 {
+    va_list ap;
+    va_start(ap,msg);
+
 #ifdef DEBUG
     if (RtsFlags.TraceFlags.trace_stderr) {
         trace_stderr(msg, ap);
@@ -233,6 +262,8 @@ void trace_(char *msg, va_list ap)
     {
         postMsg(msg, ap);
     }
+
+    va_end(ap);
 }
 
 void traceThreadStatus_ (StgTSO *tso USED_IF_DEBUG)