summaryrefslogtreecommitdiff
path: root/rts/RtsFlags.c
diff options
context:
space:
mode:
Diffstat (limited to 'rts/RtsFlags.c')
-rw-r--r--rts/RtsFlags.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/rts/RtsFlags.c b/rts/RtsFlags.c
index b23b19752b..7713c1a955 100644
--- a/rts/RtsFlags.c
+++ b/rts/RtsFlags.c
@@ -237,6 +237,7 @@ void initRtsFlagsDefaults(void)
RtsFlags.TraceFlags.user = false;
RtsFlags.TraceFlags.ticky = false;
RtsFlags.TraceFlags.trace_output = NULL;
+ RtsFlags.TraceFlags.eventlogFlushTime = 0;
#endif
#if defined(PROFILING)
@@ -977,6 +978,16 @@ error = true;
printRtsInfo(rtsConfig);
stg_exit(0);
}
+ else if (strequal("eventlog-flush-interval=",
+ &rts_argv[arg][2])) {
+ OPTION_SAFE;
+ double intervalSeconds = parseDouble(rts_argv[arg]+26, &error);
+ if (error) {
+ errorBelch("bad value for --eventlog-flush-interval");
+ }
+ RtsFlags.TraceFlags.eventlogFlushTime =
+ fsecondsToTime(intervalSeconds);
+ }
else if (strequal("copying-gc",
&rts_argv[arg][2])) {
OPTION_SAFE;
@@ -1799,6 +1810,14 @@ static void normaliseRtsOpts (void)
RtsFlags.ProfFlags.heapProfileIntervalTicks = 0;
}
+ if (RtsFlags.TraceFlags.eventlogFlushTime > 0) {
+ RtsFlags.TraceFlags.eventlogFlushTicks =
+ RtsFlags.TraceFlags.eventlogFlushTime /
+ RtsFlags.MiscFlags.tickInterval;
+ } else {
+ RtsFlags.TraceFlags.eventlogFlushTicks = 0;
+ }
+
if (RtsFlags.GcFlags.stkChunkBufferSize >
RtsFlags.GcFlags.stkChunkSize / 2) {
errorBelch("stack chunk buffer size (-kb) must be less than 50%%\n"