X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2FRtsFlags.c;h=2af67e7dc212dbed98139215097b8635a7639d2f;hb=4e3542263207ae49963811aeb84927027e7bb61d;hp=cce2b28fed518e04185508f95a1cfec262ccba71;hpb=3ebcd3deb769a03f4ded0fca2cf38201048c0214;p=ghc-hetmet.git diff --git a/rts/RtsFlags.c b/rts/RtsFlags.c index cce2b28..2af67e7 100644 --- a/rts/RtsFlags.c +++ b/rts/RtsFlags.c @@ -17,6 +17,14 @@ #include #endif +#ifdef HAVE_UNISTD_H +#include +#endif + +#ifdef HAVE_WINDOWS_H +#include +#endif + #include #include @@ -178,6 +186,7 @@ void initRtsFlagsDefaults(void) RtsFlags.DebugFlags.prof = rtsFalse; RtsFlags.DebugFlags.gran = rtsFalse; RtsFlags.DebugFlags.par = rtsFalse; + RtsFlags.DebugFlags.apply = rtsFalse; RtsFlags.DebugFlags.linker = rtsFalse; RtsFlags.DebugFlags.squeeze = rtsFalse; RtsFlags.DebugFlags.hpc = rtsFalse; @@ -208,6 +217,7 @@ 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 @@ -216,6 +226,7 @@ void initRtsFlagsDefaults(void) RtsFlags.ParFlags.wakeupMigrate = rtsFalse; RtsFlags.ParFlags.parGcEnabled = 1; RtsFlags.ParFlags.parGcGen = 1; + RtsFlags.ParFlags.parGcLoadBalancing = 1; #endif #ifdef PAR @@ -444,6 +455,7 @@ usage_text[] = { " -Dp DEBUG: prof", " -Dr DEBUG: gran", " -DP DEBUG: par", +" -Da DEBUG: apply", " -Dl DEBUG: linker", " -Dm DEBUG: stm", " -Dz DEBUG: stack squezing", @@ -451,7 +463,8 @@ usage_text[] = { "", #endif /* DEBUG */ #if defined(THREADED_RTS) && !defined(NOSMP) -" -N Use OS threads (default: 1)", +" -N Use processors (default: 1)", +" -N Determine the number of processors to use automatically", " -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", @@ -696,6 +709,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(); @@ -1131,7 +1148,23 @@ error = rtsTrue; #if defined(THREADED_RTS) && !defined(NOSMP) case 'N': THREADED_BUILD_ONLY( - if (rts_argv[arg][2] != '\0') { + if (rts_argv[arg][2] == '\0') { +#if defined(PROFILING) + RtsFlags.ParFlags.nNodes = 1; +#else +#if defined(mingw32_HOST_OS) + { + SYSTEM_INFO si; + GetSystemInfo(&si); + RtsFlags.ParFlags.nNodes = si.dwNumberOfProcessors; + } +#elif defined(HAVE_SYSCONF) + RtsFlags.ParFlags.nNodes = sysconf(_SC_NPROCESSORS_CONF); +#else + RtsFlags.ParFlags.nNodes = 1; +#endif +#endif + } else { RtsFlags.ParFlags.nNodes = strtol(rts_argv[arg]+2, (char **) NULL, 10); if (RtsFlags.ParFlags.nNodes <= 0) { @@ -1179,6 +1212,9 @@ error = rtsTrue; error = rtsTrue; } break; + case 'b': + RtsFlags.ParFlags.parGcLoadBalancing = rtsFalse; + break; case 'm': RtsFlags.ParFlags.migrate = rtsFalse; break;