/* ----------------------------------------------------------------------------
- * $Id: RtsAPI.h,v 1.4 1999/03/02 19:44:15 sof Exp $
+ * $Id: RtsAPI.h,v 1.11 2000/03/31 03:09:35 hwloidl Exp $
*
* (c) The GHC Team, 1998-1999
*
#ifndef RTSAPI_H
#define RTSAPI_H
-#include "SchedAPI.h" /* for SchedulerStatus */
+/*
+ * Running the scheduler
+ */
+typedef enum {
+ NoStatus, /* not finished yet */
+ Success,
+ Killed, /* another thread killed us */
+ Interrupted, /* stopped in response to a call to interruptStgRts */
+ Deadlock /* no threads to run, but main thread hasn't finished */
+} SchedulerStatus;
typedef StgClosure *HaskellObj;
/* ----------------------------------------------------------------------------
Starting up and shutting down the Haskell RTS.
------------------------------------------------------------------------- */
-extern void startupHaskell ( int argc, char *argv[] );
+extern void startupHaskell ( int argc, char *argv[], void *init_root );
extern void shutdownHaskell ( void );
+extern void shutdownHaskellAndExit ( int exitCode );
/* ----------------------------------------------------------------------------
Building Haskell objects from C datatypes.
rts_evalIO ( HaskellObj p, /*out*/HaskellObj *ret );
SchedulerStatus
-rts_evalIO_ ( HaskellObj p, unsigned int stack_size, /*out*/HaskellObj *ret );
+rts_evalLazyIO ( HaskellObj p, unsigned int stack_size, /*out*/HaskellObj *ret );
+
+#if defined(PAR) || defined(SMP)
+SchedulerStatus
+rts_evalNothing(unsigned int stack_size);
+#endif
void
rts_checkSchedStatus ( char* site, SchedulerStatus rc);