[project @ 1998-12-02 13:17:09 by simonm]
[ghc-hetmet.git] / ghc / runtime / main / Itimer.lc
diff --git a/ghc/runtime/main/Itimer.lc b/ghc/runtime/main/Itimer.lc
deleted file mode 100644 (file)
index cfd8733..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-%
-% (c) The AQUA Project, Glasgow University, 1995
-%
-%************************************************************************
-%*                                                                      *
-\section[Itimer.lc]{Interval Timer}
-%*                                                                     *
-%************************************************************************
-
-The interval timer is used for profiling and for context switching in the
-threaded build.  Though POSIX 1003.1b includes a standard interface for
-such things, no one really seems to be implementing them yet.  Even 
-Solaris 2.3 only seems to provide support for @CLOCK_REAL@, whereas we're
-keen on getting access to @CLOCK_VIRTUAL@.
-
-Hence, we use the old-fashioned @setitimer@ that just about everyone seems
-to support.  So much for standards.
-
-\begin{code}
-
-#if defined(PROFILING) || defined(CONCURRENT)
-
-/* OLD: # include "platform.h" */
-
-# include "config.h"
-
-#if !defined(_AIX)
-# define NON_POSIX_SOURCE
-#endif
-
-# include "rtsdefs.h"
-
-/* As recommended in the autoconf manual */
-# ifdef TIME_WITH_SYS_TIME
-#  include <sys/time.h>
-#  include <time.h>
-# else
-#  ifdef HAVE_SYS_TIME_H
-#   include <sys/time.h>
-#  else
-#   include <time.h>
-#  endif
-# endif
-\end{code}
-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
-
-\begin{code}
-#if defined(cygwin32_TARGET_OS)
-
-#include <windows.h>  /* OK, bring it all in... */
-
-/*
-  vtalrm_handler is assigned and set up in
-  main/Signals.lc.
-
-  vtalrm_id (defined in main/Signals.lc) holds
-  the system id for the current timer (used to 
-  later block/kill the timer)
-*/
-extern I_ vtalrm_id;
-extern TIMECALLBACK *vtalrm_cback;
-int 
-initialize_virtual_timer(ms)
-int ms;
-{
-  /* VTALRM is currently not supported by  cygwin32, 
-     so we use the Timer support provided by the
-     MultiMedia API that is part of Win32. The
-     parameters to timeSetEvent may require some tweaking.
-  */
-  unsigned int delay,vtalrm_id;
-  delay = timeBeginPeriod(1);
-  if (delay == TIMERR_NOCANDO) { /* error of some sort. */
-     return delay;
-  }
-  vtalrm_id =
-    timeSetEvent(ms,     /* event every `delay' milliseconds. */
-               1,       /* precision is within 5 millisecs. */
-               (LPTIMECALLBACK)vtalrm_cback,
-               0,
-               TIME_PERIODIC);
-  return 0;
-}
-#else
-
-int
-initialize_virtual_timer(ms)
-int ms;
-{
-# ifndef HAVE_SETITIMER
-    fprintf(stderr, "No virtual timer on this system\n");
-    return -1;
-# else
-    struct itimerval it;
-
-    it.it_value.tv_sec = ms / 1000;
-    it.it_value.tv_usec = 1000 * (ms - (1000 * it.it_value.tv_sec));
-    it.it_interval = it.it_value;
-    return (setitimer(ITIMER_VIRTUAL, &it, NULL));
-# endif
-}
-
-#endif /* !cygwin32_TARGET_OS */
-
-# if 0
-/* This is a potential POSIX version */
-int
-initialize_virtual_timer(ms)
-int ms;
-{
-    struct sigevent se;
-    struct itimerspec it;
-    timer_t tid;
-
-    se.sigev_notify = SIGEV_SIGNAL;
-    se.sigev_signo = SIGVTALRM;
-    se.sigev_value.sival_int = SIGVTALRM;
-    if (timer_create(CLOCK_VIRTUAL, &se, &tid)) {
-       fprintf(stderr, "Can't create virtual timer.\n");
-       EXIT(EXIT_FAILURE);
-    }
-    it.it_value.tv_sec = ms / 1000;
-    it.it_value.tv_nsec = 1000000 * (ms - 1000 * it.it_value.tv_sec);
-    it.it_interval = it.it_value;
-    timer_settime(tid, TIMER_RELTIME, &it, NULL);
-}
-# endif
-
-#endif /* PROFILING || CONCURRENT */
-
-\end{code}