X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Frts%2FMain.c;h=c6d41702a830c44a205b337f816c81e94c9b709f;hb=ec6ae2beb90fe1f475531de3a3210ca5da50d6ad;hp=114b3fc01fdc09c6a4aa7db8c43ad9e27465f995;hpb=423d477bfecd490de1449c59325c8776f91d7aac;p=ghc-hetmet.git diff --git a/ghc/rts/Main.c b/ghc/rts/Main.c index 114b3fc..c6d4170 100644 --- a/ghc/rts/Main.c +++ b/ghc/rts/Main.c @@ -1,5 +1,4 @@ /* ----------------------------------------------------------------------------- - * $Id: Main.c,v 1.41 2004/08/13 13:10:10 simonmar Exp $ * * (c) The GHC Team 1998-2000 * @@ -17,6 +16,7 @@ #include "RtsFlags.h" #include "RtsUtils.h" #include "Prelude.h" +#include "Task.h" #include #ifdef DEBUG @@ -51,6 +51,11 @@ int main(int argc, char *argv[]) startupHaskell(argc,argv,__stginit_ZCMain); + /* Register this thread as a task, so we can get timing stats about it */ +#if defined(RTS_SUPPORTS_THREADS) + threadIsTask(osThreadId()); +#endif + /* 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; @@ -78,14 +83,14 @@ int main(int argc, char *argv[]) if (IAmMainThread == rtsTrue) { IF_PAR_DEBUG(verbose, - fprintf(stderr, "==== [%x] Main Thread Started ...\n", mytid)); + debugBelch("==== [%x] Main Thread Started ...\n", mytid)); /* ToDo: Dump event for the main thread */ status = rts_mainLazyIO((HaskellObj)mainIO_closure, NULL); } else { /* Just to show we're alive */ IF_PAR_DEBUG(verbose, - fprintf(stderr, "== [%x] Non-Main PE enters scheduler via taskStart() without work ...\n", + debugBelch("== [%x] Non-Main PE enters scheduler via taskStart() without work ...\n", mytid)); /* all non-main threads enter the scheduler without work */ @@ -110,11 +115,11 @@ int main(int argc, char *argv[]) /* check the status of the entire Haskell computation */ switch (status) { case Killed: - prog_belch("main thread exited (uncaught exception)"); + errorBelch("main thread exited (uncaught exception)"); exit_status = EXIT_KILLED; break; case Interrupted: - prog_belch("interrupted"); + errorBelch("interrupted"); exit_status = EXIT_INTERRUPTED; break; case Success: @@ -122,7 +127,7 @@ int main(int argc, char *argv[]) break; #if defined(PAR) case NoStatus: - prog_belch("main thread PE killed; probably due to failure of another PE; check /tmp/pvml..."); + errorBelch("main thread PE killed; probably due to failure of another PE; check /tmp/pvml..."); exit_status = EXIT_KILLED; break; #endif