X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2FRtsFlags.c;h=1cf7700b51d1c93401608f2c680810034478b663;hb=df58c2a53d37caf4f3b4d0b60a0466461bba7d19;hp=a3d1d83603400352292acda5a8104195632b85d0;hpb=ebf733111484edc973797025418cba8f096246f6;p=ghc-hetmet.git diff --git a/rts/RtsFlags.c b/rts/RtsFlags.c index a3d1d83..1cf7700 100644 --- a/rts/RtsFlags.c +++ b/rts/RtsFlags.c @@ -172,9 +172,10 @@ void initRtsFlagsDefaults(void) RtsFlags.CcFlags.doCostCentres = 0; #endif /* PROFILING or PAR */ -#ifdef PROFILING RtsFlags.ProfFlags.doHeapProfile = rtsFalse; RtsFlags.ProfFlags.profileInterval = 100; + +#ifdef PROFILING RtsFlags.ProfFlags.includeTSOs = rtsFalse; RtsFlags.ProfFlags.showCCSOnException = rtsFalse; RtsFlags.ProfFlags.maxRetainerSetSize = 8; @@ -186,14 +187,13 @@ void initRtsFlagsDefaults(void) RtsFlags.ProfFlags.ccsSelector = NULL; RtsFlags.ProfFlags.retainerSelector = NULL; RtsFlags.ProfFlags.bioSelector = NULL; - -#elif defined(DEBUG) - RtsFlags.ProfFlags.doHeapProfile = rtsFalse; #endif RtsFlags.MiscFlags.tickInterval = 50; /* In milliseconds */ RtsFlags.ConcFlags.ctxtSwitchTime = 50; /* In milliseconds */ + RtsFlags.MiscFlags.install_signal_handlers = rtsTrue; + #ifdef THREADED_RTS RtsFlags.ParFlags.nNodes = 1; RtsFlags.ParFlags.migrate = rtsTrue; @@ -380,23 +380,20 @@ usage_text[] = { " -L Maximum length of a cost-centre stack in a heap profile", " (default: 25)", "", -" -i Time between heap samples (seconds, default: 0.1)", -"", " -xt Include threads (TSOs) in a heap profile", "", " -xc Show current cost centre stack on raising an exception", +"", # endif #endif /* PROFILING or PAR */ -#if !defined(PROFILING) && defined(DEBUG) +#if !defined(PROFILING) "", -" -h Debugging Heap residency profile", -" (output file .hp)", -" break-down: L = closure label (default)", -" T = closure type (constructor, thunk etc.)", +" -hT Heap residency profile (output file .hp)", #endif +" -i Time between heap samples (seconds, default: 0.1)", "", #if defined(TICKY_TICKY) -" -r Produce reduction profiling statistics (with -rstderr for stderr)", +" -r Produce ticky-ticky statistics (with -rstderr for stderr)", "", #endif #if defined(PAR) @@ -436,6 +433,8 @@ usage_text[] = { " -qm Don't automatically migrate threads between CPUs", " -qw Migrate a thread to the current CPU when it is woken up", #endif +" --install-signal-handlers=", +" Install signal handlers (default: yes)", #if defined(THREADED_RTS) || defined(PAR) " -e Size of spark pools (default 100)", #endif @@ -657,6 +656,23 @@ error = rtsTrue; error = rtsTrue; break; + /* This isn't going to allow us to keep related options + together as we add more --* flags. We really need a + proper options parser. */ + case '-': + if (strequal("install-signal-handlers=yes", + &rts_argv[arg][2])) { + RtsFlags.MiscFlags.install_signal_handlers = rtsTrue; + } + else if (strequal("install-signal-handlers=no", + &rts_argv[arg][2])) { + RtsFlags.MiscFlags.install_signal_handlers = rtsFalse; + } + else { + errorBelch("unknown RTS option: %s",rts_argv[arg]); + error = rtsTrue; + } + break; case 'A': RtsFlags.GcFlags.minAllocAreaSize = decode(rts_argv[arg]+2) / BLOCK_SIZE; @@ -915,12 +931,9 @@ error = rtsTrue; } ) break; case 'h': /* serial heap profile */ -#if !defined(PROFILING) && defined(DEBUG) +#if !defined(PROFILING) switch (rts_argv[arg][2]) { case '\0': - case 'L': - RtsFlags.ProfFlags.doHeapProfile = HEAP_BY_INFOPTR; - break; case 'T': RtsFlags.ProfFlags.doHeapProfile = HEAP_BY_CLOSURE_TYPE; break; @@ -1036,7 +1049,6 @@ error = rtsTrue; #endif /* PROFILING */ break; -#if defined(PROFILING) case 'i': /* heap sample interval */ if (rts_argv[arg][2] == '\0') { /* use default */ @@ -1048,7 +1060,6 @@ error = rtsTrue; RtsFlags.ProfFlags.profileInterval = cst; } break; -#endif /* =========== CONCURRENT ========================= */ case 'C': /* context switch interval */ @@ -1230,13 +1241,11 @@ error = rtsTrue; RtsFlags.MiscFlags.tickInterval); } -#ifdef PROFILING if (RtsFlags.ProfFlags.profileInterval > 0) { RtsFlags.MiscFlags.tickInterval = stg_min(RtsFlags.ProfFlags.profileInterval, RtsFlags.MiscFlags.tickInterval); } -#endif if (RtsFlags.ConcFlags.ctxtSwitchTime > 0) { RtsFlags.ConcFlags.ctxtSwitchTicks = @@ -1246,10 +1255,8 @@ error = rtsTrue; RtsFlags.ConcFlags.ctxtSwitchTicks = 0; } -#ifdef PROFILING RtsFlags.ProfFlags.profileIntervalTicks = RtsFlags.ProfFlags.profileInterval / RtsFlags.MiscFlags.tickInterval; -#endif if (error) { const char **p;