X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2Fposix%2FItimer.c;h=1fcfa1625e6200580d9bed30851e8d5ca23d1bf3;hb=f71b024714320a3f1606b3fda36610ac3f043774;hp=51e08f82803a2f84e9b0a610174571557bd9f8b3;hpb=8d71be7cbd079f5eab23484a53a43b59dd0399e5;p=ghc-hetmet.git diff --git a/rts/posix/Itimer.c b/rts/posix/Itimer.c index 51e08f8..1fcfa16 100644 --- a/rts/posix/Itimer.c +++ b/rts/posix/Itimer.c @@ -1,6 +1,6 @@ /* ----------------------------------------------------------------------------- * - * (c) The GHC Team, 1995-1999 + * (c) The GHC Team, 1995-2007 * * Interval timer for profiling and pre-emptive scheduling. * @@ -95,9 +95,11 @@ #endif #if defined(USE_TIMER_CREATE) -timer_t timer; +static timer_t timer; #endif +static nat itimer_interval = 50; + static void install_vtalrm_handler(TickProc handle_tick) @@ -127,7 +129,7 @@ install_vtalrm_handler(TickProc handle_tick) } void -initTicker (TickProc handle_tick) +initTicker (nat ms, TickProc handle_tick) { install_vtalrm_handler(handle_tick); @@ -135,6 +137,8 @@ initTicker (TickProc handle_tick) timestamp = getourtimeofday(); #endif + itimer_interval = ms; + #if defined(USE_TIMER_CREATE) { struct sigevent ev; @@ -151,14 +155,14 @@ initTicker (TickProc handle_tick) } void -startTicker(nat ms) +startTicker(void) { #if defined(USE_TIMER_CREATE) { struct itimerspec it; - it.it_value.tv_sec = ms / 1000; - it.it_value.tv_nsec = (ms % 1000) * 1000000; + it.it_value.tv_sec = itimer_interval / 1000; + it.it_value.tv_nsec = (itimer_interval % 1000) * 1000000; it.it_interval = it.it_value; if (timer_settime(timer, 0, &it, NULL) != 0) { @@ -170,8 +174,8 @@ startTicker(nat ms) { struct itimerval it; - it.it_value.tv_sec = ms / 1000; - it.it_value.tv_usec = (ms % 1000) * 1000; + it.it_value.tv_sec = itimer_interval / 1000; + it.it_value.tv_usec = (itimer_interval % 1000) * 1000; it.it_interval = it.it_value; if (setitimer(ITIMER_FLAVOUR, &it, NULL) != 0) { @@ -213,8 +217,10 @@ stopTicker(void) void exitTicker(void) { +#if defined(USE_TIMER_CREATE) timer_delete(timer); // ignore errors - we don't really care if it fails. +#endif } #if 0