Skip to content
Snippets Groups Projects
Commit d1a47b32 authored by sof's avatar sof
Browse files

[project @ 1999-07-03 18:39:40 by sof]

New RTS entry point, shutdownHaskellAndExit(), which does what the name
implies - used when you want to exit from within Haskell code (e.g.,
System.exitWith.)
parent 803331a0
No related merge requests found
/* ---------------------------------------------------------------------------- /* ----------------------------------------------------------------------------
* $Id: RtsAPI.h,v 1.5 1999/05/21 14:46:20 sof Exp $ * $Id: RtsAPI.h,v 1.6 1999/07/03 18:39:41 sof Exp $
* *
* (c) The GHC Team, 1998-1999 * (c) The GHC Team, 1998-1999
* *
...@@ -19,6 +19,7 @@ typedef StgClosure *HaskellObj; ...@@ -19,6 +19,7 @@ typedef StgClosure *HaskellObj;
------------------------------------------------------------------------- */ ------------------------------------------------------------------------- */
extern void startupHaskell ( int argc, char *argv[] ); extern void startupHaskell ( int argc, char *argv[] );
extern void shutdownHaskell ( void ); extern void shutdownHaskell ( void );
extern void shutdownHaskellAndExit ( int exitCode );
/* ---------------------------------------------------------------------------- /* ----------------------------------------------------------------------------
Building Haskell objects from C datatypes. Building Haskell objects from C datatypes.
......
/* ----------------------------------------------------------------------------- /* -----------------------------------------------------------------------------
* $Id: SchedAPI.h,v 1.4 1999/06/03 08:09:31 sof Exp $ * $Id: SchedAPI.h,v 1.5 1999/07/03 18:39:41 sof Exp $
* *
* (c) The GHC Team 1998 * (c) The GHC Team 1998
* *
...@@ -23,6 +23,15 @@ typedef enum { ...@@ -23,6 +23,15 @@ typedef enum {
AllBlocked, /* subtly different from Deadlock */ AllBlocked, /* subtly different from Deadlock */
} SchedulerStatus; } SchedulerStatus;
/*
* schedule() plus the thread creation functions are not part
* part of the external RTS API, so leave them out if we're
* not compiling rts/ bits. -- sof 7/99
*
*/
#ifdef COMPILING_RTS
SchedulerStatus schedule(StgTSO *main_thread, /*out*/StgClosure **ret); SchedulerStatus schedule(StgTSO *main_thread, /*out*/StgClosure **ret);
/* /*
...@@ -83,5 +92,6 @@ void deleteThread(StgTSO *tso); ...@@ -83,5 +92,6 @@ void deleteThread(StgTSO *tso);
*/ */
void RevertCAFs(void); void RevertCAFs(void);
#endif
#endif #endif
/* ----------------------------------------------------------------------------- /* -----------------------------------------------------------------------------
* $Id: RtsStartup.c,v 1.15 1999/07/02 09:31:54 simonmar Exp $ * $Id: RtsStartup.c,v 1.16 1999/07/03 18:39:40 sof Exp $
* *
* (c) The GHC Team, 1998-1999 * (c) The GHC Team, 1998-1999
* *
...@@ -139,6 +139,19 @@ startupHaskell(int argc, char *argv[]) ...@@ -139,6 +139,19 @@ startupHaskell(int argc, char *argv[])
end_init(); end_init();
} }
/*
* Shutting down the RTS - two ways of doing this, one which
* calls exit(), one that doesn't.
*
* (shutdownHaskellAndExit() is called by System.exitWith).
*/
void
shutdownHaskellAndExit(int n)
{
shutdownHaskell();
stg_exit(n);
}
void void
shutdownHaskell(void) shutdownHaskell(void)
{ {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment