[project @ 2001-08-07 09:20:52 by simonmar]
[ghc-hetmet.git] / ghc / rts / RtsFlags.h
index 6931fe8..ab493d2 100644 (file)
@@ -1,5 +1,5 @@
 /* -----------------------------------------------------------------------------
- * $Id: RtsFlags.h,v 1.21 2000/02/17 17:19:42 simonmar Exp $
+ * $Id: RtsFlags.h,v 1.35 2001/08/07 09:20:52 simonmar Exp $
  *
  * (c) The GHC Team, 1998-1999
  *
@@ -16,8 +16,10 @@ struct GC_FLAGS {
     FILE   *statsFile;
     nat            giveStats;
 #define NO_GC_STATS     0
-#define SUMMARY_GC_STATS 1
-#define VERBOSE_GC_STATS 2
+#define COLLECT_GC_STATS 1
+#define ONELINE_GC_STATS 2
+#define SUMMARY_GC_STATS 3
+#define VERBOSE_GC_STATS 4
 
     nat     maxStkSize;         /* in *words* */
     nat     initialStkSize;     /* in *words* */
@@ -31,12 +33,13 @@ struct GC_FLAGS {
 
     nat     generations;
     nat     steps;
+    rtsBool squeezeUpdFrames;
 
-    rtsBool forceGC; /* force a major GC every <interval> bytes */
-    int            forcingInterval; /* actually, stored as a number of *words* */
-    rtsBool ringBell;
+    rtsBool compact;
+    double  compactThreshold;
 
-    rtsBool squeezeUpdFrames;
+    rtsBool ringBell;
+    rtsBool frontpanel;
 };
 
 /* Hack: this struct uses bitfields so that we can use a binary arg
@@ -61,12 +64,15 @@ struct DEBUG_FLAGS {
   rtsBool prof        : 1; /* 512 */
   rtsBool gran        : 1; /* 1024 */
   rtsBool par         : 1; /* 2048 */
+
+  /* The object linker */
+  rtsBool linker      : 1; /* 4096 */
 };
 
-#if defined(PROFILING) || defined(PAR)
-    /* with PROFILING, full cost-centre stuff (also PROFILING_FLAGS);
-       with PAR, just the four fixed cost-centres.
-    */
+#define MAX_DEBUG_OPTION     12
+#define DEBUG_MASK(n)        ((nat)(ldexp(1,n)))
+#define MAX_DEBUG_MASK       ((nat)(ldexp(1,(MAX_DEBUG_OPTION+1))-1))
+
 struct COST_CENTRE_FLAGS {
     unsigned int           doCostCentres;
 # define COST_CENTRES_SUMMARY  1
@@ -74,58 +80,58 @@ struct COST_CENTRE_FLAGS {
 # define COST_CENTRES_ALL      3
 # define COST_CENTRES_XML       4
 
-    int            ctxtSwitchTicks; /* derived */
     int            profilerTicks;   /* derived */
     int            msecsPerTick;    /* derived */
 };
-#endif
 
 #ifdef PROFILING
 struct PROFILING_FLAGS {
     unsigned int       doHeapProfile;
 
+    nat                 profileFrequency;  /* how often do you want */
+                                           /* to sample (in ms) */
+
+
 # define NO_HEAP_PROFILING     0       /* N.B. Used as indexes into arrays */
 # define HEAP_BY_CCS           1
 # define HEAP_BY_MOD           2
-# define HEAP_BY_GRP           3
 # define HEAP_BY_DESCR         4
 # define HEAP_BY_TYPE          5
-# define HEAP_BY_TIME          6
 
     rtsBool            showCCSOnException;
   
 # define CCchar    'C'
 # define MODchar   'M'
-# define GRPchar   'G'
 # define DESCRchar 'D'
 # define TYPEchar  'Y'
-# define TIMEchar  'T'
-
-    char *ccSelector;
-    char *modSelector;
-    char *grpSelector;
-    char *descrSelector;
-    char *typeSelector;
-    char *kindSelector;
+
+    char*               modSelector;
+    char*               descrSelector;
+    char*               typeSelector;
+    char*               ccSelector;
+
+
 };
 #elif defined(DEBUG)
 # define NO_HEAP_PROFILING     0
 # define HEAP_BY_INFOPTR        1
 # define HEAP_BY_CLOSURE_TYPE   2
 struct PROFILING_FLAGS {
-    unsigned int      doHeapProfile; /* heap profile using symbol table */
+    unsigned int  doHeapProfile;     /* heap profile using symbol table */
+
 };
 #endif /* DEBUG || PROFILING */
 
 struct CONCURRENT_FLAGS {
-  int ctxtSwitchTime; /* in milliseconds */
+    int ctxtSwitchTime;                /* in milliseconds */
+    int ctxtSwitchTicks;       /* derived */
 };
 
 #ifdef PAR
 /* currently the same as GRAN_STATS_FLAGS */
 struct PAR_STATS_FLAGS {
   rtsBool Full;       /* Full .gr profile (rtsTrue) or only END events? */
-  // rtsBool Suppressed; /* No .gr profile at all */
+  rtsBool Suppressed; /* No .gr profile at all */
   rtsBool Binary;     /* Binary profile? (not yet implemented) */
   rtsBool Sparks;     /* Info on sparks in profile? */
   rtsBool Heap;       /* Info on heap allocs in profile? */ 
@@ -136,19 +142,20 @@ struct PAR_STATS_FLAGS {
 struct PAR_DEBUG_FLAGS {  
   /* flags to control debugging output in various subsystems */
   rtsBool verbose    : 1; /*    1 */
-  rtsBool trace      : 1; /*    2 */
+  rtsBool bq         : 1; /*    2 */
   rtsBool schedule   : 1; /*    4 */
   rtsBool free       : 1; /*    8 */
   rtsBool resume     : 1; /*   16 */
   rtsBool weight     : 1; /*   32 */
   rtsBool fetch      : 1; /*   64 */
-  rtsBool ack        : 1; /*  128 */
-  rtsBool fish       : 1; /*  256 */
-  rtsBool forward    : 1; /*  512 */
+  rtsBool fish       : 1; /*  128 */
+  rtsBool tables     : 1; /*  256 */
+  rtsBool packet     : 1; /*  512 */
   rtsBool pack       : 1; /* 1024 */
+  rtsBool paranoia   : 1; /* 2048 */
 };
 
-#define MAX_PAR_DEBUG_OPTION     10
+#define MAX_PAR_DEBUG_OPTION     11
 #define PAR_DEBUG_MASK(n)        ((nat)(ldexp(1,n)))
 #define MAX_PAR_DEBUG_MASK       ((nat)(ldexp(1,(MAX_PAR_DEBUG_OPTION+1))-1))
 
@@ -156,7 +163,10 @@ struct PAR_FLAGS {
   struct PAR_STATS_FLAGS ParStats;  /* profile and stats output */
   struct PAR_DEBUG_FLAGS Debug;         /* debugging options */
   rtsBool  outputDisabled;       /* Disable output for performance purposes */
+  rtsBool  doFairScheduling;     /* Fair-ish scheduling (round robin; no time-slices) */
   nat      packBufferSize;
+  nat      thunksToPack;          /* number of thunks in packet + 1 */ 
+  nat      globalising;           /* globalisation scheme */
   nat     maxLocalSparks;        /* spark pool size */
   nat      maxThreads;            /* thread pool size */
   nat      maxFishes;             /* max number of active fishes */
@@ -244,6 +254,7 @@ struct GRAN_FLAGS {
   struct GRAN_COST_FLAGS Costs;          /* cost metric for simulation */
   struct GRAN_DEBUG_FLAGS Debug;         /* debugging options */
 
+  nat  maxThreads;              // ToDo: share with SMP and GUM
   // rtsBool labelling;
   nat  packBufferSize;
   nat  packBufferSize_internal;