X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=rts%2FTimer.c;h=0e0b5386b759530934ca135c98d6148a3e51cb56;hp=b4f5f8f130bebb752fdc9a87813b5232569868eb;hb=8a2809c29de9f23eba7ca682b48390033a9d40f6;hpb=7434fb5be86c7cc59c520dc07dc96b27b4fb1406 diff --git a/rts/Timer.c b/rts/Timer.c index b4f5f8f..0e0b538 100644 --- a/rts/Timer.c +++ b/rts/Timer.c @@ -17,6 +17,7 @@ #include "Rts.h" #include "RtsFlags.h" #include "Proftimer.h" +#include "Storage.h" #include "Schedule.h" #include "Timer.h" #include "Ticker.h" @@ -41,9 +42,7 @@ static void handle_tick(int unused STG_UNUSED) { -#ifdef PROFILING handleProfTick(); -#endif if (RtsFlags.ConcFlags.ctxtSwitchTicks > 0) { ticks_to_ctxt_switch--; if (ticks_to_ctxt_switch <= 0) { @@ -54,26 +53,27 @@ handle_tick(int unused STG_UNUSED) #if defined(THREADED_RTS) /* - * If we've been inactive for idleGCDelayTicks (set by +RTS + * If we've been inactive for idleGCDelayTime (set by +RTS * -I), tell the scheduler to wake up and do a GC, to check * for threads that are deadlocked. */ switch (recent_activity) { case ACTIVITY_YES: recent_activity = ACTIVITY_MAYBE_NO; - ticks_to_gc = RtsFlags.GcFlags.idleGCDelayTicks; + ticks_to_gc = RtsFlags.GcFlags.idleGCDelayTime / + RtsFlags.MiscFlags.tickInterval; break; case ACTIVITY_MAYBE_NO: if (ticks_to_gc == 0) break; /* 0 ==> no idle GC */ ticks_to_gc--; if (ticks_to_gc == 0) { - ticks_to_gc = RtsFlags.GcFlags.idleGCDelayTicks; + ticks_to_gc = RtsFlags.GcFlags.idleGCDelayTime / + RtsFlags.MiscFlags.tickInterval; recent_activity = ACTIVITY_INACTIVE; blackholes_need_checking = rtsTrue; /* hack: re-use the blackholes_need_checking flag */ - + wakeUpRts(); } - wakeUpRts(); break; default: break; @@ -81,18 +81,17 @@ handle_tick(int unused STG_UNUSED) #endif } -int -startTimer(nat ms) +void +startTimer(void) { -#ifdef PROFILING initProfTimer(); -#endif - - return startTicker(ms, handle_tick); + if (RtsFlags.MiscFlags.tickInterval != 0) { + startTicker(RtsFlags.MiscFlags.tickInterval, handle_tick); + } } -int -stopTimer() +void +stopTimer(void) { - return stopTicker(); + stopTicker(); }