diff --git a/ghc/runtime/main/main.lc b/ghc/runtime/main/main.lc index 1eee1ff0d1c115ebf98d730eaa2bca926cc4b16a..34744a59fad642f952ae198fc123310d2fffec6d 100644 --- a/ghc/runtime/main/main.lc +++ b/ghc/runtime/main/main.lc @@ -14,6 +14,10 @@ #include "rtsdefs.h" #include <setjmp.h> +#if 1 +#include <windows.h> +#endif + #if defined(STDC_HEADERS) || defined(HAVE_STRING_H) # include <string.h> /* An ANSI string.h and pre-ANSI memory.h might conflict. */ @@ -99,8 +103,15 @@ jmp_buf restart_main; /* For restarting after a signal */ int nPEs = 0; /* Number of PEs */ #endif -int /* return type of "main" is defined by the C standard */ -main(int argc, char *argv[]) +\end{code} + +Setting up and initialising the run-time system: +(used by main(), and people that don't allow Haskell +to stay in control.) + +\begin{code} +void +initRTS(int argc, char *argv[]) { #ifdef GRAN int i; @@ -124,7 +135,6 @@ Manager's requirements. if (*argv[0] == '-') { /* Look to see whether we're the Main Thread */ IAmMainThread = rtsTrue; argv++; argc--; /* Strip off flag argument */ -/* fprintf(stderr, "I am Main Thread\n"); */ } /* * Grab the number of PEs out of the argument vector, and @@ -151,7 +161,6 @@ Manager's requirements. what statsfile to use (if any); [if so, write the whole cmd-line into it] - This is unlikely to work well in parallel! KH. */ initRtsFlagsDefaults(); defaultsHook(); /* the one supplied does nothing; @@ -264,6 +273,14 @@ Manager's requirements. initUserSignals(); #endif + +} + +int /* return type of "main" is defined by the C standard */ +main(int argc, char *argv[]) +{ + initRTS(argc,argv); + #ifdef CONCURRENT AvailableStack = AvailableTSO = PrelBase_Z91Z93_closure; # if defined(GRAN) /* HWL */