X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=rts%2FRtsFlags.c;h=cbc2bb5261c81980dbec23e5d96c8da027eb1faf;hp=86900404d426259c81d266780c6ff02872708f5a;hb=3b5940fd32df31b56c1ab6891b0a8f338e796049;hpb=8815f0c06c1dcea2ecca14c98f0972ea9ed29d51 diff --git a/rts/RtsFlags.c b/rts/RtsFlags.c index 8690040..cbc2bb5 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 @@ -454,7 +462,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", @@ -1138,7 +1147,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) {