X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2Fposix%2FItimer.c;h=df95f21b924433b9f902f529955148d28ca7c135;hb=0b9530245a33b8206ca38b9de6dfb01e056fd8dc;hp=8600c0a99cd31061c3db4ab5a66e6d284189120c;hpb=e30aca19def5c629a8429bd57e56535b7f8f85c8;p=ghc-hetmet.git diff --git a/rts/posix/Itimer.c b/rts/posix/Itimer.c index 8600c0a..df95f21 100644 --- a/rts/posix/Itimer.c +++ b/rts/posix/Itimer.c @@ -67,9 +67,8 @@ * For now, we're using (1), but this needs a better solution. --SDM */ -#if defined(HAVE_TIMER_CREATE) && defined(HAVE_TIMER_SETTIME) +#if defined(USE_TIMER_CREATE) -# define USE_TIMER_CREATE # define ITIMER_SIGNAL SIGVTALRM # ifdef THREADED_RTS # define TIMER_FLAVOUR CLOCK_REALTIME @@ -79,7 +78,6 @@ #elif defined(HAVE_SETITIMER) -# define USE_ITIMER # ifdef THREADED_RTS // Oh dear, we have to use SIGALRM if there's no timer_create and // we're using the THREADED_RTS. This leads to problems, see bug #850. @@ -235,8 +233,11 @@ lnat getourtimeofday(void) { struct timeval tv; + nat interval; + interval = RtsFlags.MiscFlags.tickInterval; + if (interval == 0) { interval = 50; } gettimeofday(&tv, (struct timezone *) NULL); // cast to lnat because nat may be 64 bit when int is only 32 bit - return ((lnat)tv.tv_sec * 1000 / RtsFlags.MiscFlags.tickInterval + - (lnat)tv.tv_usec / (RtsFlags.MiscFlags.tickInterval * 1000)); + return ((lnat)tv.tv_sec * 1000 / interval + + (lnat)tv.tv_usec / (interval * 1000)); }