X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fincludes%2FRtsAPI.h;h=b3ea1d622b7fc48376f9d3bd7aae7fbf96c1b42b;hb=9213df4a0c5a8f121832d36d6d3afbf1c80f1a0a;hp=c9c24f9f6a54b7edc53d4eb5f08d0b5e505a888e;hpb=21462c00b3241f15de3b145ac92ee5b266b5733a;p=ghc-hetmet.git diff --git a/ghc/includes/RtsAPI.h b/ghc/includes/RtsAPI.h index c9c24f9..b3ea1d6 100644 --- a/ghc/includes/RtsAPI.h +++ b/ghc/includes/RtsAPI.h @@ -1,5 +1,5 @@ /* ---------------------------------------------------------------------------- - * $Id: RtsAPI.h,v 1.4 1999/03/02 19:44:15 sof Exp $ + * $Id: RtsAPI.h,v 1.21 2001/03/22 03:51:09 hwloidl Exp $ * * (c) The GHC Team, 1998-1999 * @@ -10,52 +10,73 @@ #ifndef RTSAPI_H #define RTSAPI_H -#include "SchedAPI.h" /* for SchedulerStatus */ +#include "HsFFI.h" + +/* + * Running the scheduler + */ +typedef enum { + NoStatus, /* not finished yet */ + Success, /* completed successfully */ + Killed, /* uncaught exception */ + 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)(void) ); +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. ------------------------------------------------------------------------- */ -HaskellObj rts_mkChar ( char c ); -HaskellObj rts_mkInt ( int i ); -HaskellObj rts_mkInt8 ( int i ); -HaskellObj rts_mkInt16 ( int i ); -HaskellObj rts_mkInt32 ( int i ); -HaskellObj rts_mkInt64 ( long long i ); -HaskellObj rts_mkWord ( unsigned int w ); -HaskellObj rts_mkWord8 ( unsigned int w ); -HaskellObj rts_mkWord16 ( unsigned int w ); -HaskellObj rts_mkWord32 ( unsigned int w ); -HaskellObj rts_mkWord64 ( unsigned long long w ); -HaskellObj rts_mkFloat ( float f ); -HaskellObj rts_mkDouble ( double f ); -HaskellObj rts_mkStablePtr ( StgStablePtr s ); -HaskellObj rts_mkAddr ( void *a ); -HaskellObj rts_mkBool ( int b ); -HaskellObj rts_mkString ( char *s ); +HaskellObj rts_mkChar ( HsChar c ); +HaskellObj rts_mkInt ( HsInt i ); +HaskellObj rts_mkInt8 ( HsInt8 i ); +HaskellObj rts_mkInt16 ( HsInt16 i ); +HaskellObj rts_mkInt32 ( HsInt32 i ); +HaskellObj rts_mkInt64 ( HsInt64 i ); +HaskellObj rts_mkWord ( HsWord w ); +HaskellObj rts_mkWord8 ( HsWord8 w ); +HaskellObj rts_mkWord16 ( HsWord16 w ); +HaskellObj rts_mkWord32 ( HsWord32 w ); +HaskellObj rts_mkWord64 ( HsWord64 w ); +HaskellObj rts_mkPtr ( HsPtr a ); +HaskellObj rts_mkFloat ( HsFloat f ); +HaskellObj rts_mkDouble ( HsDouble f ); +HaskellObj rts_mkStablePtr ( HsStablePtr s ); +HaskellObj rts_mkBool ( HsBool b ); +HaskellObj rts_mkString ( char *s ); HaskellObj rts_apply ( HaskellObj, HaskellObj ); +/* DEPRECATED (use rts_mkPtr): */ +HaskellObj rts_mkAddr ( HsAddr a ); + /* ---------------------------------------------------------------------------- Deconstructing Haskell objects ------------------------------------------------------------------------- */ -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 ); -void * rts_getAddr ( HaskellObj ); -int rts_getBool ( HaskellObj ); +HsChar rts_getChar ( HaskellObj ); +HsInt rts_getInt ( HaskellObj ); +HsInt32 rts_getInt32 ( HaskellObj ); +HsWord rts_getWord ( HaskellObj ); +HsWord32 rts_getWord32 ( HaskellObj ); +HsPtr rts_getPtr ( HaskellObj ); +HsFloat rts_getFloat ( HaskellObj ); +HsDouble rts_getDouble ( HaskellObj ); +HsStablePtr rts_getStablePtr ( HaskellObj ); +HsBool rts_getBool ( HaskellObj ); + +/* DEPRECATED (use rts_getPtr): */ +HsAddr rts_getAddr ( HaskellObj ); /* ---------------------------------------------------------------------------- Evaluating Haskell expressions @@ -72,7 +93,7 @@ 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 ); void rts_checkSchedStatus ( char* site, SchedulerStatus rc);