+
+#if defined(USE_TIMER_CREATE)
+
+# define ITIMER_SIGNAL SIGVTALRM
+# ifdef THREADED_RTS
+# define TIMER_FLAVOUR CLOCK_REALTIME
+# else
+# define TIMER_FLAVOUR CLOCK_PROCESS_CPUTIME_ID
+# endif
+
+#elif defined(HAVE_SETITIMER)
+
+# 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.
+# define ITIMER_SIGNAL SIGALRM
+# define ITIMER_FLAVOUR ITIMER_REAL
+# else
+# define ITIMER_SIGNAL SIGVTALRM
+# define ITIMER_FLAVOUR ITIMER_VIRTUAL
+# endif
+