#include <ctype.h>
#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#ifdef HAVE_WINDOWS_H
+#include <windows.h>
+#endif
+
#include <stdlib.h>
#include <string.h>
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;
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.wakeupMigrate = rtsFalse;
RtsFlags.ParFlags.parGcEnabled = 1;
RtsFlags.ParFlags.parGcGen = 1;
+ RtsFlags.ParFlags.parGcLoadBalancing = 1;
#endif
#ifdef PAR
" -Dp DEBUG: prof",
" -Dr DEBUG: gran",
" -DP DEBUG: par",
+" -Da DEBUG: apply",
" -Dl DEBUG: linker",
" -Dm DEBUG: stm",
" -Dz DEBUG: stack squezing",
"",
#endif /* DEBUG */
#if defined(THREADED_RTS) && !defined(NOSMP)
-" -N<n> Use <n> OS threads (default: 1)",
+" -N<n> Use <n> processors (default: 1)",
+" -N Determine the number of processors to use automatically",
" -q1 Use one OS thread for GC (turns off parallel GC)",
" -qg<n> Use parallel GC only for generations >= <n> (default: 1)",
" -qm Don't automatically migrate threads between CPUs",
&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();
#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) {
error = rtsTrue;
}
break;
+ case 'b':
+ RtsFlags.ParFlags.parGcLoadBalancing = rtsFalse;
+ break;
case 'm':
RtsFlags.ParFlags.migrate = rtsFalse;
break;