X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2FRtsFlags.c;h=439dfd78977a6b7aa621f4a13babd2ade429efb0;hb=0488ced8e92c06d6404159c00599c44db6b51dc8;hp=f8c8403328eeffccddb95c4592d68ab85b8584d3;hpb=50c4d03919a9d5c37c14004e964083251f655e93;p=ghc-hetmet.git diff --git a/rts/RtsFlags.c b/rts/RtsFlags.c index f8c8403..439dfd7 100644 --- a/rts/RtsFlags.c +++ b/rts/RtsFlags.c @@ -212,6 +212,7 @@ void initRtsFlagsDefaults(void) RtsFlags.ParFlags.nNodes = 1; RtsFlags.ParFlags.migrate = rtsTrue; RtsFlags.ParFlags.wakeupMigrate = rtsFalse; + RtsFlags.ParFlags.gcThreads = 1; #endif #ifdef PAR @@ -320,6 +321,7 @@ void initRtsFlagsDefaults(void) #ifdef USE_PAPI /* By default no special measurements taken */ RtsFlags.PapiFlags.eventType = 0; + RtsFlags.PapiFlags.numUserEvents = 0; #endif } @@ -445,6 +447,7 @@ usage_text[] = { #endif /* DEBUG */ #if defined(THREADED_RTS) && !defined(NOSMP) " -N Use OS threads (default: 1)", +" -g Use OS threads for GC (default: 1)", " -qm Don't automatically migrate threads between CPUs", " -qw Migrate a thread to the current CPU when it is woken up", #endif @@ -719,6 +722,14 @@ error = rtsTrue; case 'e': RtsFlags.PapiFlags.eventType = PAPI_FLAG_CB_EVENTS; break; + case '+': + if (RtsFlags.PapiFlags.numUserEvents >= MAX_PAPI_USER_EVENTS) { + errorBelch("maximum number of PAPI events reached"); + stg_exit(EXIT_FAILURE); + } + RtsFlags.PapiFlags.eventType = PAPI_USER_EVENTS; + RtsFlags.PapiFlags.userEvents[RtsFlags.PapiFlags.numUserEvents++] = rts_argv[arg] + 3; + break; default: bad_option( rts_argv[arg] ); } @@ -1117,6 +1128,18 @@ error = rtsTrue; errorBelch("bad value for -N"); error = rtsTrue; } + } + ) break; + + 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; + } #if defined(PROFILING) if (RtsFlags.ParFlags.nNodes > 1) { errorBelch("bad option %s: only -N1 is supported with profiling", rts_argv[arg]);