X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2FRtsFlags.c;h=14f4fb0d83a38022caa5f03ac297dc9ef28c32df;hb=e6243a818496aad82b6f47511d3bd9bc800f747d;hp=829e6002593423d4d85d63fdc40afd7404ad4219;hpb=34e8e513c4044ee2b13f0b759c0f49212dad2008;p=ghc-hetmet.git diff --git a/rts/RtsFlags.c b/rts/RtsFlags.c index 829e600..14f4fb0 100644 --- a/rts/RtsFlags.c +++ b/rts/RtsFlags.c @@ -208,12 +208,15 @@ void initRtsFlagsDefaults(void) RtsFlags.ConcFlags.ctxtSwitchTime = 20; /* In milliseconds */ RtsFlags.MiscFlags.install_signal_handlers = rtsTrue; + RtsFlags.MiscFlags.machineReadable = rtsFalse; + RtsFlags.MiscFlags.linkerMemBase = 0; #ifdef THREADED_RTS RtsFlags.ParFlags.nNodes = 1; RtsFlags.ParFlags.migrate = rtsTrue; RtsFlags.ParFlags.wakeupMigrate = rtsFalse; - RtsFlags.ParFlags.gcThreads = 1; + RtsFlags.ParFlags.parGcEnabled = 1; + RtsFlags.ParFlags.parGcGen = 1; #endif #ifdef PAR @@ -449,8 +452,9 @@ usage_text[] = { "", #endif /* DEBUG */ #if defined(THREADED_RTS) && !defined(NOSMP) -" -N Use OS threads (default: 1) (also sets -g)", -" -g Use OS threads for GC (default: 1)", +" -N Use OS threads (default: 1)", +" -q1 Use one OS thread for GC (turns off parallel GC)", +" -qg Use parallel GC only for generations >= (default: 1)", " -qm Don't automatically migrate threads between CPUs", " -qw Migrate a thread to the current CPU when it is woken up", #endif @@ -476,6 +480,10 @@ usage_text[] = { #if defined(GRAN) /* ToDo: fill in decent Docu here */ " -b... All GranSim options start with -b; see GranSim User's Guide for details", #endif +#if defined(x86_64_HOST_ARCH) +" -xm Base address to mmap memory in the GHCi linker", +" (hex; must be <80000000)", +#endif #if defined(USE_PAPI) " -aX CPU performance counter measurements using PAPI", " (use with the -s option). X is one of:", @@ -689,6 +697,10 @@ error = rtsTrue; &rts_argv[arg][2])) { RtsFlags.MiscFlags.install_signal_handlers = rtsFalse; } + else if (strequal("machine-readable", + &rts_argv[arg][2])) { + RtsFlags.MiscFlags.machineReadable = rtsTrue; + } else if (strequal("info", &rts_argv[arg][2])) { printRtsInfo(); @@ -1127,8 +1139,6 @@ error = rtsTrue; if (rts_argv[arg][2] != '\0') { RtsFlags.ParFlags.nNodes = strtol(rts_argv[arg]+2, (char **) NULL, 10); - // set -g at the same time as -N by default - RtsFlags.ParFlags.gcThreads = RtsFlags.ParFlags.nNodes; if (RtsFlags.ParFlags.nNodes <= 0) { errorBelch("bad value for -N"); error = rtsTrue; @@ -1144,15 +1154,17 @@ error = rtsTrue; case 'g': THREADED_BUILD_ONLY( - if (rts_argv[arg][2] != '\0') { - RtsFlags.ParFlags.gcThreads - = strtol(rts_argv[arg]+2, (char **) NULL, 10); - if (RtsFlags.ParFlags.nNodes <= 0) { - errorBelch("bad value for -g"); - error = rtsTrue; - } - } - ) break; + switch (rts_argv[arg][2]) { + case '1': + // backwards compat only + RtsFlags.ParFlags.parGcEnabled = rtsFalse; + break; + default: + errorBelch("unknown RTS option: %s",rts_argv[arg]); + error = rtsTrue; + break; + } + ) break; case 'q': switch (rts_argv[arg][2]) { @@ -1160,6 +1172,18 @@ error = rtsTrue; errorBelch("incomplete RTS option: %s",rts_argv[arg]); error = rtsTrue; break; + case '1': + RtsFlags.ParFlags.parGcEnabled = rtsFalse; + break; + case 'g': + if (rts_argv[arg][3] != '\0') { + RtsFlags.ParFlags.parGcGen + = strtol(rts_argv[arg]+3, (char **) NULL, 10); + } else { + errorBelch("bad value for -qg"); + error = rtsTrue; + } + break; case 'm': RtsFlags.ParFlags.migrate = rtsFalse; break; @@ -1259,7 +1283,22 @@ error = rtsTrue; } break; - case 'c': /* Debugging tool: show current cost centre on an exception */ +#if defined(x86_64_HOST_ARCH) + case 'm': /* linkerMemBase */ + if (rts_argv[arg][3] != '\0') { + RtsFlags.MiscFlags.linkerMemBase + = strtol(rts_argv[arg]+3, (char **) NULL, 16); + if (RtsFlags.MiscFlags.linkerMemBase > 0x80000000) { + errorBelch("-xm: value must be <80000000"); + error = rtsTrue; + } + } else { + RtsFlags.MiscFlags.linkerMemBase = 0; + } + break; +#endif + + case 'c': /* Debugging tool: show current cost centre on an exception */ PROFILING_BUILD_ONLY( RtsFlags.ProfFlags.showCCSOnException = rtsTrue; );