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 idleGCDelayTicks; /* in milliseconds */
+ int idleGCDelayTime; /* in milliseconds */
+
+ StgWord heapBase; /* address to ask the OS for memory */
};
struct DEBUG_FLAGS {
/* flags to control debugging output & extra checking in various subsystems */
rtsBool scheduler; /* 's' */
rtsBool interpreter; /* 'i' */
- rtsBool codegen; /* 'c' */
rtsBool weak; /* 'w' */
rtsBool gccafs; /* 'G' */
rtsBool gc; /* 'g' */
rtsBool apply; /* 'a' */
rtsBool stm; /* 'm' */
rtsBool squeeze; /* 'z' stack squeezing & lazy blackholing */
+ rtsBool hpc; /* 'c' coverage */
};
struct COST_CENTRE_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') */
nat maxRetainerSetSize;
+ nat ccsLength;
+
char* modSelector;
char* descrSelector;
char* typeSelector;
int ctxtSwitchTicks; /* derived */
};
+struct MISC_FLAGS {
+ int tickInterval; /* in milliseconds */
+ rtsBool install_signal_handlers;
+};
+
#ifdef PAR
/* currently the same as GRAN_STATS_FLAGS */
struct PAR_STATS_FLAGS {
rtsBool migrate; /* migrate threads between capabilities */
rtsBool wakeupMigrate; /* migrate a thread on wakeup */
unsigned int maxLocalSparks;
+ nat gcThreads; /* number of threads for parallel GC */
};
#endif /* THREADED_RTS */
FILE *tickyFile;
};
+struct TRACE_FLAGS {
+ rtsBool sched; /* trace scheduler events for profiling */
+ rtsBool gc; /* trace GC events */
+ rtsBool timestamp; /* add timestamps to traces */
+};
+
+#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: */
/* The first portion of RTS_FLAGS is invariant. */
struct GC_FLAGS GcFlags;
struct CONCURRENT_FLAGS ConcFlags;
+ struct MISC_FLAGS MiscFlags;
struct DEBUG_FLAGS DebugFlags;
struct COST_CENTRE_FLAGS CcFlags;
struct PROFILING_FLAGS ProfFlags;
struct TICKY_FLAGS TickyFlags;
+ struct TRACE_FLAGS TraceFlags;
#if defined(THREADED_RTS) || defined(PAR)
struct PAR_FLAGS ParFlags;
#ifdef GRAN
struct GRAN_FLAGS GranFlags;
#endif
+#ifdef USE_PAPI
+ struct PAPI_FLAGS PapiFlags;
+#endif
} RTS_FLAGS;
#ifdef COMPILING_RTS_MAIN