[project @ 1999-11-02 17:08:28 by simonmar]
[ghc-hetmet.git] / ghc / rts / RtsFlags.h
index a82ec51..4e2443b 100644 (file)
@@ -1,5 +1,7 @@
 /* -----------------------------------------------------------------------------
- * $Id: RtsFlags.h,v 1.5 1999/01/23 17:52:21 sof Exp $
+ * $Id: RtsFlags.h,v 1.17 1999/11/02 15:06:00 simonmar Exp $
+ *
+ * (c) The GHC Team, 1998-1999
  *
  * Datatypes that holds the command-line flag settings.
  *
 
 struct GC_FLAGS {
     FILE   *statsFile;
-    nat            giveStats; /* ToDo: replace with enum type? */
+    nat            giveStats;
 #define NO_GC_STATS     0
-#define VERBOSE_GC_STATS 1
+#define SUMMARY_GC_STATS 1
+#define VERBOSE_GC_STATS 2
 
     nat     maxStkSize;         /* in *words* */
     nat     initialStkSize;     /* in *words* */
@@ -22,10 +25,12 @@ struct GC_FLAGS {
     nat            maxHeapSize;        /* in *blocks* */
     nat     minAllocAreaSize;   /* in *blocks* */
     nat     minOldGenSize;      /* in *blocks* */
+    nat     heapSizeSuggestion; /* in *blocks* */
     double  oldGenFactor;
     double  pcFreeHeap;
 
     nat     generations;
+    nat     steps;
 
     rtsBool forceGC; /* force a major GC every <interval> bytes */
     int            forcingInterval; /* actually, stored as a number of *words* */
@@ -35,7 +40,9 @@ struct GC_FLAGS {
 };
 
 /* Hack: this struct uses bitfields so that we can use a binary arg
- * with the -D flag
+ * with the -D flag.
+ * Remember to update the corresponding bit of RtsFlags.c if you
+ * change/extend this struct.
  */
 struct DEBUG_FLAGS {  
   /* flags to control debugging output in various subsystems */
@@ -49,6 +56,9 @@ struct DEBUG_FLAGS {
 
   /* flags to control consistency checking (often very expensive!) */
   rtsBool sanity      : 1; /* 128 */
+
+  rtsBool stable      : 1; /* 256 */
+  rtsBool prof        : 1; /* 512 */
 };
 
 #if defined(PROFILING) || defined(PAR)
@@ -75,8 +85,9 @@ struct COST_CENTRE_FLAGS {
 #ifdef PROFILING
 struct PROFILING_FLAGS {
     unsigned int       doHeapProfile;
+
 # define NO_HEAP_PROFILING     0       /* N.B. Used as indexes into arrays */
-# define HEAP_BY_CC            1
+# define HEAP_BY_CCS           1
 # define HEAP_BY_MOD           2
 # define HEAP_BY_GRP           3
 # define HEAP_BY_DESCR         4
@@ -107,8 +118,10 @@ struct PROFILING_FLAGS {
 #endif /* DEBUG || PROFILING */
 
 struct CONCURRENT_FLAGS {
-    int            ctxtSwitchTime; /* in milliseconds */
-    int            maxThreads;
+  int    ctxtSwitchTime; /* in milliseconds */
+#ifdef SMP
+  nat     nNodes;         /* number of threads to run simultaneously */
+#endif
 };
 
 #ifdef PAR
@@ -211,8 +224,6 @@ struct GRAN_FLAGS {
 struct TICKY_FLAGS {
     rtsBool showTickyStats;
     FILE   *tickyFile;
-
-    /* see also: doUpdEntryCounts in AllFlags */
 };
 #endif /* TICKY_TICKY */
 
@@ -241,7 +252,11 @@ struct RTS_FLAGS {
 #endif
 };
 
+#ifdef COMPILING_RTS_MAIN
+extern DLLIMPORT struct RTS_FLAGS RtsFlags;
+#else
 extern struct RTS_FLAGS RtsFlags;
+#endif
 
 /* Routines that operate-on/to-do-with RTS flags: */
 
@@ -268,8 +283,11 @@ void setupRtsFlags(int *argc, char *argv[], int *rts_argc, char *rts_argv[]);
 #define TIME_FILENAME_FMT      "%0.122s.time"
 #define TIME_FILENAME_FMT_GUM  "%0.118s.%03d.time"
 
-extern int     prog_argc; /* an "int" so as to match normal "argc" */
+/* an "int" so as to match normal "argc" */
+/* Now defined in Stg.h (lib/std/cbits need these too.)
+extern int     prog_argc;
 extern char  **prog_argv;
+*/
 extern int     rts_argc;  /* ditto */
 extern char   *rts_argv[];