/* -----------------------------------------------------------------------------
*
- * (c) The GHC Team, 1998-1999
+ * (c) The GHC Team, 1998-2009
*
* Datatypes that holds the command-line flag settings.
*
+ * Do not #include this file directly: #include "Rts.h" instead.
+ *
+ * To understand the structure of the RTS headers, see the wiki:
+ * http://hackage.haskell.org/trac/ghc/wiki/Commentary/SourceTree/Includes
+ *
* ---------------------------------------------------------------------------*/
#ifndef RTS_FLAGS_H
nat minAllocAreaSize; /* in *blocks* */
nat minOldGenSize; /* in *blocks* */
nat heapSizeSuggestion; /* in *blocks* */
+ rtsBool heapSizeSuggestionAuto;
double oldGenFactor;
double pcFreeHeap;
rtsBool sanity; /* 'S' warning: might be expensive! */
rtsBool stable; /* 't' */
rtsBool prof; /* 'p' */
- rtsBool eventlog; /* 'e' */
rtsBool linker; /* 'l' the object linker */
rtsBool apply; /* 'a' */
rtsBool stm; /* 'm' */
rtsBool squeeze; /* 'z' stack squeezing & lazy blackholing */
rtsBool hpc; /* 'c' coverage */
- rtsBool timestamp; /* add timestamps to traces */
+ rtsBool sparks; /* 'r' */
};
struct COST_CENTRE_FLAGS {
};
-#ifdef EVENTLOG
-struct EVENTLOG_FLAGS {
- rtsBool doEventLogging;
+#define TRACE_NONE 0
+#define TRACE_EVENTLOG 1
+#define TRACE_STDERR 2
+
+struct TRACE_FLAGS {
+ int tracing;
+ rtsBool timestamp; /* show timestamp in stderr output */
+
+ rtsBool scheduler; /* trace scheduler events */
};
-#endif
struct CONCURRENT_FLAGS {
int ctxtSwitchTime; /* in milliseconds */
rtsBool wakeupMigrate; /* migrate a thread on wakeup */
unsigned int maxLocalSparks;
rtsBool parGcEnabled; /* enable parallel GC */
- rtsBool parGcGen; /* do parallel GC in this generation
+ unsigned int parGcGen; /* do parallel GC in this generation
* and higher only */
- rtsBool parGcLoadBalancing; /* do load-balancing in parallel GC */
+ rtsBool parGcLoadBalancingEnabled;
+ /* enable load-balancing in the
+ * parallel GC */
+ unsigned int parGcLoadBalancingGen;
+ /* do load-balancing in this
+ * generation and higher only */
rtsBool setAffinity; /* force thread affinity with CPUs */
};
#endif /* THREADED_RTS */
nat eventType; /* The type of events to count */
nat numUserEvents;
char * userEvents[MAX_PAPI_USER_EVENTS];
+ /* Allow user to enter either PAPI preset or native events */
+ nat userEventsKind[MAX_PAPI_USER_EVENTS];
};
#define PAPI_FLAG_CACHE_L1 1
#define PAPI_FLAG_STALLS 4
#define PAPI_FLAG_CB_EVENTS 5
#define PAPI_USER_EVENTS 6
+#define PAPI_PRESET_EVENT_KIND 0
+#define PAPI_NATIVE_EVENT_KIND 1
#endif
struct DEBUG_FLAGS DebugFlags;
struct COST_CENTRE_FLAGS CcFlags;
struct PROFILING_FLAGS ProfFlags;
-#ifdef EVENTLOG
- struct EVENTLOG_FLAGS EventLogFlags;
-#endif
+ struct TRACE_FLAGS TraceFlags;
struct TICKY_FLAGS TickyFlags;
#if defined(THREADED_RTS)
/* Routines that operate-on/to-do-with RTS flags: */
-extern void initRtsFlagsDefaults(void);
-extern void setupRtsFlags(int *argc, char *argv[], int *rts_argc, char *rts_argv[]);
-extern void setProgName(char *argv[]);
+void initRtsFlagsDefaults(void);
+void setupRtsFlags(int *argc, char *argv[], int *rts_argc, char *rts_argv[]);
+void setProgName(char *argv[]);
/*