RTS tidyup sweep, first phase
[ghc-hetmet.git] / rts / posix / Itimer.c
index 6b4ba3b..3a09e80 100644 (file)
  * Hence, we use the old-fashioned @setitimer@ that just about everyone seems
  * to support.  So much for standards.
  */
+
+#include "PosixSource.h"
 #include "Rts.h"
-#include "RtsFlags.h"
-#include "Timer.h"
+
 #include "Ticker.h"
-#include "posix/Itimer.h"
+#include "Itimer.h"
 #include "Proftimer.h"
-#include "Storage.h"
 #include "Schedule.h"
-#include "posix/Select.h"
+#include "Select.h"
 
 /* As recommended in the autoconf manual */
 # ifdef TIME_WITH_SYS_TIME
 
 #elif defined(HAVE_SETITIMER)
 
-#  ifdef THREADED_RTS
+#  if defined(THREADED_RTS) || !defined(HAVE_SETITIMER_VIRTUAL)
 //   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.
+//   We also use it if we don't have a virtual timer (trac #2883).
 #    define ITIMER_SIGNAL  SIGALRM
 #    define ITIMER_FLAVOUR ITIMER_REAL
 #  else
@@ -228,31 +229,6 @@ exitTicker(void)
 #endif
 }
 
-#if 0
-/* Currently unused */
-void
-block_vtalrm_signal(void)
-{
-    sigset_t signals;
-    
-    sigemptyset(&signals);
-    sigaddset(&signals, ITIMER_SIGNAL);
-
-    (void) sigprocmask(SIG_BLOCK, &signals, NULL);
-}
-
-void
-unblock_vtalrm_signal(void)
-{
-    sigset_t signals;
-    
-    sigemptyset(&signals);
-    sigaddset(&signals, ITIMER_SIGNAL);
-
-    (void) sigprocmask(SIG_UNBLOCK, &signals, NULL);
-}
-#endif
-
 /* gettimeofday() takes around 1us on our 500MHz PIII.  Since we're
  * only calling it 50 times/s, it shouldn't have any great impact.
  */