projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[project @ 2003-08-22 22:24:12 by sof]
[ghc-hetmet.git]
/
ghc
/
rts
/
RtsStartup.c
diff --git
a/ghc/rts/RtsStartup.c
b/ghc/rts/RtsStartup.c
index
6826f5c
..
0c5c2a3
100644
(file)
--- a/
ghc/rts/RtsStartup.c
+++ b/
ghc/rts/RtsStartup.c
@@
-1,5
+1,5
@@
/* -----------------------------------------------------------------------------
/* -----------------------------------------------------------------------------
- * $Id: RtsStartup.c,v 1.69 2003/01/29 09:54:33 simonmar Exp $
+ * $Id: RtsStartup.c,v 1.75 2003/08/22 22:24:15 sof Exp $
*
* (c) The GHC Team, 1998-2002
*
*
* (c) The GHC Team, 1998-2002
*
@@
-17,7
+17,7
@@
#include "Schedule.h" /* initScheduler */
#include "Stats.h" /* initStats */
#include "Signals.h"
#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 "Weak.h"
#include "Ticky.h"
#include "StgRun.h"
@@
-50,8
+50,16
@@
# include "LLC.h"
#endif
# include "LLC.h"
#endif
+#if defined(mingw32_TARGET_OS)
+#include "win32/AsyncIO.h"
+#endif
+
#include <stdlib.h>
#include <stdlib.h>
+#ifdef HAVE_LOCALE_H
+#include <locale.h>
+#endif
+
// Flag Structure
struct RTS_FLAGS RtsFlags;
// Flag Structure
struct RTS_FLAGS RtsFlags;
@@
-140,29
+148,33
@@
hs_init(int *argc, char **argv[])
initProfiling1();
#endif
initProfiling1();
#endif
-#if defined(PROFILING) || defined(DEBUG)
- initProfiling2();
-#endif
-
/* start the virtual timer 'subsystem'. */
/* start the virtual timer 'subsystem'. */
- startVirtTimer(TICK_MILLISECS);
+ startTimer(TICK_MILLISECS);
/* Initialise the stats department */
initStats();
/* 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
/* 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 RTS_GTK_FRONTPANEL
if (RtsFlags.GcFlags.frontpanel) {
initFrontPanel();
}
#endif
+#ifdef HAVE_LOCALE_H
+ setlocale(LC_ALL,"");
+#endif
+
/* Record initialization times */
stat_endInit();
}
/* Record initialization times */
stat_endInit();
}
@@
-185,8
+197,8
@@
startupHaskell(int argc, char *argv[], void (*init_root)(void))
void
getProgArgv(int *argc, char **argv[])
{
void
getProgArgv(int *argc, char **argv[])
{
- *argc = prog_argc;
- *argv = prog_argv;
+ if (argc) { *argc = prog_argc; }
+ if (argv) { *argv = prog_argv; }
}
void
}
void
@@
-258,6
+270,12
@@
hs_add_root(void (*init_root)(void))
StgRun((StgFunPtr)stg_init, &cap.r);
freeGroup(bd);
StgRun((StgFunPtr)stg_init, &cap.r);
freeGroup(bd);
+
+#if defined(PROFILING) || defined(DEBUG)
+ // This must be done after module initialisation.
+ // ToDo: make this work in the presence of multiple hs_add_root()s.
+ initProfiling2();
+#endif
}
/* -----------------------------------------------------------------------------
}
/* -----------------------------------------------------------------------------
@@
-294,7
+312,7
@@
hs_exit(void)
#endif
/* stop the ticker */
#endif
/* stop the ticker */
- stopVirtTimer();
+ stopTimer();
/* reset the standard file descriptors to blocking mode */
resetNonBlockingFd(0);
/* reset the standard file descriptors to blocking mode */
resetNonBlockingFd(0);
@@
-341,6
+359,10
@@
hs_exit(void)
#if defined(TICKY_TICKY)
if (RtsFlags.TickyFlags.showTickyStats) PrintTickyInfo();
#endif
#if defined(TICKY_TICKY)
if (RtsFlags.TickyFlags.showTickyStats) PrintTickyInfo();
#endif
+
+#if defined(mingw32_TARGET_OS)
+ shutdownAsyncIO();
+#endif
}
// Compatibility interfaces
}
// Compatibility interfaces