X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fincludes%2FRtsAPI.h;h=b28d7abc7da28f5489e2a1cc929f7864d588a35e;hb=674ad01f5f5edcc20e3fee4e5f39a2d8388120a3;hp=cc6f7e7e32a4218ccff1a31cd188763eccf564e0;hpb=7f309f1c021e7583f724cce599ce2dd3c439361b;p=ghc-hetmet.git diff --git a/ghc/includes/RtsAPI.h b/ghc/includes/RtsAPI.h index cc6f7e7..b28d7ab 100644 --- a/ghc/includes/RtsAPI.h +++ b/ghc/includes/RtsAPI.h @@ -1,5 +1,5 @@ /* ---------------------------------------------------------------------------- - * $Id: RtsAPI.h,v 1.3 1999/02/05 16:02:27 simonm Exp $ + * $Id: RtsAPI.h,v 1.12 2000/04/10 14:28:14 sewardj Exp $ * * (c) The GHC Team, 1998-1999 * @@ -10,15 +10,27 @@ #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 shutdownHaskell ( void ); +extern void startupHaskell ( int argc, char *argv[], void *init_root ); +extern void shutdownHaskell ( void ); +extern void shutdownHaskellAndExit ( int exitCode ); +extern void setProgArgv ( int argc, char *argv[] ); +extern void getProgArgv ( int *argc, char **argv[] ); /* ---------------------------------------------------------------------------- Building Haskell objects from C datatypes. @@ -48,7 +60,9 @@ HaskellObj rts_apply ( HaskellObj, HaskellObj ); ------------------------------------------------------------------------- */ char rts_getChar ( HaskellObj ); int rts_getInt ( HaskellObj ); +int rts_getInt32 ( HaskellObj ); unsigned int rts_getWord ( HaskellObj ); +unsigned int rts_getWord32 ( HaskellObj ); float rts_getFloat ( HaskellObj ); double rts_getDouble ( HaskellObj ); StgStablePtr rts_getStablePtr ( HaskellObj ); @@ -70,7 +84,12 @@ SchedulerStatus 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);