#include "Linker.h"
#include "ThreadLabels.h"
#include "BlockAlloc.h"
+#include "Trace.h"
+#include "RtsTypeable.h"
#if defined(RTS_GTK_FRONTPANEL)
#include "FrontPanel.h"
setProgArgv(*argc,*argv);
}
+ /* initTracing must be after setupRtsFlags() */
+ initTracing();
+
#if defined(PAR)
/* NB: this really must be done after processing the RTS flags */
IF_PAR_DEBUG(verbose,
/* initialise the stable pointer table */
initStablePtrTable();
+ /* initialise the shared Typeable store */
+ initTypeableStore();
+
#if defined(DEBUG)
/* initialise thread label table (tso->char*) */
initThreadLabelTable();
x86_init_fpu();
#endif
+#if defined(THREADED_RTS) && !defined(mingw32_HOST_OS)
+ ioManagerStart();
+#endif
+
/* Record initialization times */
stat_endInit();
}
/* start timing the shutdown */
stat_startExit();
+#if defined(THREADED_RTS) && !defined(mingw32_HOST_OS)
+ ioManagerDie();
+#endif
+
/* stop all running tasks */
exitScheduler();
// also outputs the stats (+RTS -s) info.
exitStorage();
+ /* free shared Typeable store */
+ exitTypeableStore();
+
+ /* initialise the stable pointer table */
+ exitStablePtrTable();
+
+ /* free hash table storage */
+ exitHashTable();
+
#ifdef RTS_GTK_FRONTPANEL
if (RtsFlags.GcFlags.frontpanel) {
stopFrontPanel();
static int exit_started=rtsFalse;
#endif
+void (*exitFn)(int) = 0;
+
void
stg_exit(int n)
{
IF_PAR_DEBUG(verbose, debugBelch("==-- stg_exit %d on [%x]...", n, mytid));
shutdownParallelSystem(n);
#endif
+ if (exitFn)
+ (*exitFn)(n);
exit(n);
}