-void
-#if defined(mingw32_TARGET_OS) || (defined(cygwin32_TARGET_OS) && !defined(HAVE_SETITIMER))
-CALLBACK
-handle_tick(UINT uID STG_UNUSED, UINT uMsg STG_UNUSED, DWORD dwUser STG_UNUSED,
- DWORD dw1 STG_UNUSED, DWORD d STG_UNUSED)
-#else
-handle_tick(int unused STG_UNUSED)
-#endif
-{
- total_ticks++;
-
-#ifdef PROFILING
- handleProfTick();
-#endif
-
- if (RtsFlags.ConcFlags.ctxtSwitchTicks > 0) {
- ticks_to_ctxt_switch--;
- if (ticks_to_ctxt_switch <= 0) {
- ticks_to_ctxt_switch = RtsFlags.ConcFlags.ctxtSwitchTicks;
- context_switch = 1; /* schedule a context switch */
- }
- }
-}
-
-
-/*
- * Handling timer events under cygwin32 is not done with signal/setitimer.
- * Instead of the two steps of first registering a signal handler to handle
- * \tr{SIGVTALRM} and then start generating them via @setitimer()@, we use
- * the Multimedia API (MM) and its @timeSetEvent@. (Internally, the MM API
- * creates a separate thread that will notify the main thread of timer
- * expiry). -- SOF 7/96
- *
- * 11/98: if the cygwin DLL supports setitimer(), then use it instead.
- */
-
-#if defined(mingw32_TARGET_OS) || (defined(cygwin32_TARGET_OS) && !defined(HAVE_SETITIMER))
-
-LPTIMECALLBACK vtalrm_cback;
-