[project @ 2003-08-22 22:24:12 by sof]
[ghc-hetmet.git] / ghc / rts / RtsStartup.c
index fc7bf81..0c5c2a3 100644 (file)
@@ -1,5 +1,5 @@
 /* -----------------------------------------------------------------------------
- * $Id: RtsStartup.c,v 1.70 2003/01/30 10:19:07 simonmar Exp $
+ * $Id: RtsStartup.c,v 1.75 2003/08/22 22:24:15 sof Exp $
  *
  * (c) The GHC Team, 1998-2002
  *
@@ -17,7 +17,7 @@
 #include "Schedule.h"   /* initScheduler */
 #include "Stats.h"      /* initStats */
 #include "Signals.h"
-#include "Itimer.h"
+#include "Timer.h"      /* startTimer, stopTimer */
 #include "Weak.h"
 #include "Ticky.h"
 #include "StgRun.h"
 # include "LLC.h"
 #endif
 
+#if defined(mingw32_TARGET_OS)
+#include "win32/AsyncIO.h"
+#endif
+
 #include <stdlib.h>
 
+#ifdef HAVE_LOCALE_H
+#include <locale.h>
+#endif
+
 // Flag Structure
 struct RTS_FLAGS RtsFlags;
 
@@ -141,24 +149,32 @@ hs_init(int *argc, char **argv[])
 #endif
 
     /* start the virtual timer 'subsystem'. */
-    startVirtTimer(TICK_MILLISECS);
+    startTimer(TICK_MILLISECS);
 
     /* Initialise the stats department */
     initStats();
 
-#if !defined(mingw32_TARGET_OS) && !defined(PAR)
+#if defined(RTS_USER_SIGNALS)
     /* Initialise the user signal handler set */
     initUserSignals();
     /* Set up handler to run on SIGINT, etc. */
     initDefaultHandlers();
 #endif
  
+#if defined(mingw32_TARGET_OS)
+    startupAsyncIO();
+#endif
+
 #ifdef RTS_GTK_FRONTPANEL
     if (RtsFlags.GcFlags.frontpanel) {
        initFrontPanel();
     }
 #endif
 
+#ifdef HAVE_LOCALE_H
+    setlocale(LC_ALL,"");
+#endif
+
     /* Record initialization times */
     stat_endInit();
 }
@@ -181,8 +197,8 @@ startupHaskell(int argc, char *argv[], void (*init_root)(void))
 void
 getProgArgv(int *argc, char **argv[])
 {
-    *argc = prog_argc;
-    *argv = prog_argv;
+    if (argc) { *argc = prog_argc; }
+    if (argv) { *argv = prog_argv; }
 }
 
 void
@@ -296,7 +312,7 @@ hs_exit(void)
 #endif
     
     /* stop the ticker */
-    stopVirtTimer();
+    stopTimer();
     
     /* reset the standard file descriptors to blocking mode */
     resetNonBlockingFd(0);
@@ -343,6 +359,10 @@ hs_exit(void)
 #if defined(TICKY_TICKY)
     if (RtsFlags.TickyFlags.showTickyStats) PrintTickyInfo();
 #endif
+
+#if defined(mingw32_TARGET_OS)
+    shutdownAsyncIO();
+#endif
 }
 
 // Compatibility interfaces