Commit a73c4059 authored by sof's avatar sof
Browse files

[project @ 1998-11-09 11:14:38 by sof]

Provide RTS initialisation as sep. entry point, initRTS()
parent 33a2c36d
...@@ -14,6 +14,10 @@ ...@@ -14,6 +14,10 @@
#include "rtsdefs.h" #include "rtsdefs.h"
#include <setjmp.h> #include <setjmp.h>
#if 1
#include <windows.h>
#endif
#if defined(STDC_HEADERS) || defined(HAVE_STRING_H) #if defined(STDC_HEADERS) || defined(HAVE_STRING_H)
# include <string.h> # include <string.h>
/* An ANSI string.h and pre-ANSI memory.h might conflict. */ /* An ANSI string.h and pre-ANSI memory.h might conflict. */
...@@ -99,8 +103,15 @@ jmp_buf restart_main; /* For restarting after a signal */ ...@@ -99,8 +103,15 @@ jmp_buf restart_main; /* For restarting after a signal */
int nPEs = 0; /* Number of PEs */ int nPEs = 0; /* Number of PEs */
#endif #endif
int /* return type of "main" is defined by the C standard */ \end{code}
main(int argc, char *argv[])
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 #ifdef GRAN
int i; int i;
...@@ -124,7 +135,6 @@ Manager's requirements. ...@@ -124,7 +135,6 @@ Manager's requirements.
if (*argv[0] == '-') { /* Look to see whether we're the Main Thread */ if (*argv[0] == '-') { /* Look to see whether we're the Main Thread */
IAmMainThread = rtsTrue; IAmMainThread = rtsTrue;
argv++; argc--; /* Strip off flag argument */ argv++; argc--; /* Strip off flag argument */
/* fprintf(stderr, "I am Main Thread\n"); */
} }
/* /*
* Grab the number of PEs out of the argument vector, and * Grab the number of PEs out of the argument vector, and
...@@ -151,7 +161,6 @@ Manager's requirements. ...@@ -151,7 +161,6 @@ Manager's requirements.
what statsfile to use (if any); [if so, write the whole what statsfile to use (if any); [if so, write the whole
cmd-line into it] cmd-line into it]
This is unlikely to work well in parallel! KH.
*/ */
initRtsFlagsDefaults(); initRtsFlagsDefaults();
defaultsHook(); /* the one supplied does nothing; defaultsHook(); /* the one supplied does nothing;
...@@ -264,6 +273,14 @@ Manager's requirements. ...@@ -264,6 +273,14 @@ Manager's requirements.
initUserSignals(); initUserSignals();
#endif #endif
}
int /* return type of "main" is defined by the C standard */
main(int argc, char *argv[])
{
initRTS(argc,argv);
#ifdef CONCURRENT #ifdef CONCURRENT
AvailableStack = AvailableTSO = PrelBase_Z91Z93_closure; AvailableStack = AvailableTSO = PrelBase_Z91Z93_closure;
# if defined(GRAN) /* HWL */ # if defined(GRAN) /* HWL */
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment