Add a --machine-readable RTS flag
[ghc-hetmet.git] / includes / RtsFlags.h
index d2236b4..db196a9 100644 (file)
@@ -39,10 +39,14 @@ struct GC_FLAGS {
     rtsBool compact;           /* True <=> "compact all the time" */
     double  compactThreshold;
 
+    rtsBool sweep;             /* use "mostly mark-sweep" instead of copying
+                                 * for the oldest generation */
     rtsBool ringBell;
     rtsBool frontpanel;
 
     int idleGCDelayTime;       /* in milliseconds */
+
+    StgWord heapBase;           /* address to ask the OS for memory */
 };
 
 struct DEBUG_FLAGS {  
@@ -62,6 +66,7 @@ struct DEBUG_FLAGS {
     rtsBool apply;          /* 'a' */
     rtsBool stm;            /* 'm' */
     rtsBool squeeze;        /* 'z'  stack squeezing & lazy blackholing */
+    rtsBool hpc;           /* 'c' coverage */
 };
 
 struct COST_CENTRE_FLAGS {
@@ -85,8 +90,7 @@ struct PROFILING_FLAGS {
 # define HEAP_BY_RETAINER       6
 # define HEAP_BY_LDV            7
 
-# define HEAP_BY_INFOPTR        1      /* DEBUG only */
-# define HEAP_BY_CLOSURE_TYPE   2      /* DEBUG only */
+# define HEAP_BY_CLOSURE_TYPE   8
 
     nat                 profileInterval;      /* delta between samples (in ms) */
     nat                 profileIntervalTicks; /* delta between samples (in 'ticks') */
@@ -116,6 +120,10 @@ struct CONCURRENT_FLAGS {
 
 struct MISC_FLAGS {
     int tickInterval;     /* in milliseconds */
+    rtsBool install_signal_handlers;
+    rtsBool machineReadable;
+    StgWord linkerMemBase;       /* address to ask the OS for memory
+                                  * for the linker, NULL ==> off */
 };
 
 #ifdef PAR
@@ -172,6 +180,9 @@ struct PAR_FLAGS {
   rtsBool        migrate;        /* migrate threads between capabilities */
   rtsBool        wakeupMigrate;  /* migrate a thread on wakeup */
   unsigned int  maxLocalSparks;
+  rtsBool        parGcEnabled;   /* enable parallel GC */
+  rtsBool        parGcGen;       /* do parallel GC in this generation
+                                  * and higher only */
 };
 #endif /* THREADED_RTS */
 
@@ -297,23 +308,30 @@ struct TICKY_FLAGS {
 
 struct TRACE_FLAGS {
     rtsBool sched;             /* trace scheduler events for profiling */
+    rtsBool gc;                 /* trace GC events */
     rtsBool timestamp;          /* add timestamps to traces */
 };
 
-/* Put them together: */
-
 #ifdef USE_PAPI
+#define MAX_PAPI_USER_EVENTS 8
+
 struct PAPI_FLAGS {
     nat     eventType;          /* The type of events to count */
+    nat     numUserEvents;
+    char *  userEvents[MAX_PAPI_USER_EVENTS];
 };
 
 #define PAPI_FLAG_CACHE_L1 1
 #define PAPI_FLAG_CACHE_L2 2
 #define PAPI_FLAG_BRANCH 3
 #define PAPI_FLAG_STALLS 4
+#define PAPI_FLAG_CB_EVENTS 5
+#define PAPI_USER_EVENTS 6
 
 #endif
 
+/* Put them together: */
+
 typedef struct _RTS_FLAGS {
     /* The first portion of RTS_FLAGS is invariant. */
     struct GC_FLAGS         GcFlags;