X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Frts%2FMain.c;h=1c721b795cfab8363b0c569f29785873456e5dbc;hb=1b28d4e1f43185ad8c8e7407c66413e1b358402b;hp=09e6e218a9d6fd464ae1024503aa7ab8ac7020cf;hpb=d3d20ba70003e869af4d9f44d70d1d403d131812;p=ghc-hetmet.git diff --git a/ghc/rts/Main.c b/ghc/rts/Main.c index 09e6e21..1c721b7 100644 --- a/ghc/rts/Main.c +++ b/ghc/rts/Main.c @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------------- - * $Id: Main.c,v 1.13 2000/01/13 12:40:15 simonmar Exp $ + * $Id: Main.c,v 1.14 2000/01/13 14:34:03 hwloidl Exp $ * * (c) The GHC Team 1998-1999 * @@ -16,21 +16,25 @@ #include "RtsUtils.h" #ifdef DEBUG -#include "Printer.h" /* for printing */ +# include "Printer.h" /* for printing */ #endif #ifdef INTERPRETER -#include "Assembler.h" +# include "Assembler.h" #endif #ifdef PAR -#include "ParInit.h" -#include "Parallel.h" -#include "LLC.h" +# include "ParInit.h" +# include "Parallel.h" +# include "LLC.h" +#endif + +#if defined(GRAN) || defined(PAR) +# include "GranSimRts.h" #endif #ifdef HAVE_WINDOWS_H -#include +# include #endif @@ -41,24 +45,65 @@ int main(int argc, char *argv[]) { int exit_status; - SchedulerStatus status; + /* all GranSim/GUM init is done in startupHaskell; sets IAmMainThread! */ + startupHaskell(argc,argv); -# ifndef PAR - /* ToDo: want to start with a larger stack size */ - status = rts_evalIO((StgClosure *)&mainIO_closure, NULL); -# else + /* kick off the computation by creating the main thread with a pointer + to mainIO_closure representing the computation of the overall program; + then enter the scheduler with this thread and off we go; + + the same for GranSim (we have only one instance of this code) + + in a parallel setup, where we have many instances of this code + running on different PEs, we should do this only for the main PE + (IAmMainThread is set in startupHaskell) + */ + +# if defined(PAR) + +# if DEBUG + { /* a wait loop to allow attachment of gdb to UNIX threads */ + nat i, j, s; + + for (i=0, s=0; i