X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Frts%2FMain.c;h=564e74f259544ddcc7d39aa456a9953de697bf6b;hb=26d2cba2d0cedd5d19e2564503122294d3d7c3a1;hp=154eaa4bbbead77993594752380f0b181b02b847;hpb=0d5d32bf62c39c390934d9ef4b01e2bf2db910f8;p=ghc-hetmet.git diff --git a/ghc/rts/Main.c b/ghc/rts/Main.c index 154eaa4..564e74f 100644 --- a/ghc/rts/Main.c +++ b/ghc/rts/Main.c @@ -1,7 +1,7 @@ /* ----------------------------------------------------------------------------- - * $Id: Main.c,v 1.17 2000/03/13 10:53:55 simonmar Exp $ + * $Id: Main.c,v 1.23 2000/04/11 16:49:20 sewardj Exp $ * - * (c) The GHC Team 1998-1999 + * (c) The GHC Team 1998-2000 * * Main function for a standalone Haskell program. * @@ -38,18 +38,19 @@ # include #endif +EXTFUN(__init_PrelMain); /* Hack: we assume that we're building a batch-mode system unless * INTERPRETER is set */ -# ifndef INTERPRETER /* Hack */ +#ifndef INTERPRETER /* Hack */ int main(int argc, char *argv[]) { int exit_status; SchedulerStatus status; /* all GranSim/GUM init is done in startupHaskell; sets IAmMainThread! */ - startupHaskell(argc,argv); + startupHaskell(argc,argv,__init_PrelMain); /* kick off the computation by creating the main thread with a pointer to mainIO_closure representing the computation of the overall program; @@ -64,7 +65,7 @@ int main(int argc, char *argv[]) # if defined(PAR) -# if DEBUG +# if defined(DEBUG) { /* a wait loop to allow attachment of gdb to UNIX threads */ nat i, j, s; @@ -80,26 +81,26 @@ int main(int argc, char *argv[]) fprintf(stderr, "Main Thread Started ...\n"); /* ToDo: Dump event for the main thread */ - status = rts_evalIO((StgClosure *)&mainIO_closure, NULL); + status = rts_evalIO((HaskellObj)mainIO_closure, NULL); } else { /* Just to show we're alive */ IF_PAR_DEBUG(verbose, - fprintf(stderr, "== [%x] Non-Main PE enters scheduler without work ...\n", + fprintf(stderr, "== [%x] Non-Main PE enters scheduler via taskStart() without work ...\n", mytid)); /* all non-main threads enter the scheduler without work */ - status = schedule( /* nothing */ ); + status = rts_evalNothing((StgClosure*)NULL); } # elif defined(GRAN) /* ToDo: Dump event for the main thread */ - status = rts_evalIO((StgClosure *)&mainIO_closure, NULL); + status = rts_evalIO(mainIO_closure, NULL); # else /* !PAR && !GRAN */ /* ToDo: want to start with a larger stack size */ - status = rts_evalIO((StgClosure *)&mainIO_closure, NULL); + status = rts_evalIO((HaskellObj)mainIO_closure, NULL); # endif /* !PAR && !GRAN */