X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fincludes%2FRtsAPI.h;h=cf0792307d051251c94b9da79cf420e7e99ebba8;hb=f05e7d3f77664119bcb0fed7776ad030563de0bb;hp=b3ea1d622b7fc48376f9d3bd7aae7fbf96c1b42b;hpb=20fc2f0ced64a12d8e44956931b2ac341ed2186f;p=ghc-hetmet.git diff --git a/ghc/includes/RtsAPI.h b/ghc/includes/RtsAPI.h index b3ea1d6..cf079230 100644 --- a/ghc/includes/RtsAPI.h +++ b/ghc/includes/RtsAPI.h @@ -1,5 +1,5 @@ /* ---------------------------------------------------------------------------- - * $Id: RtsAPI.h,v 1.21 2001/03/22 03:51:09 hwloidl Exp $ + * $Id: RtsAPI.h,v 1.30 2002/09/05 08:58:55 simonmar Exp $ * * (c) The GHC Team, 1998-1999 * @@ -10,6 +10,10 @@ #ifndef RTSAPI_H #define RTSAPI_H +#ifdef __cplusplus +extern "C" { +#endif + #include "HsFFI.h" /* @@ -19,8 +23,7 @@ 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 */ + Interrupted /* stopped in response to a call to interruptStgRts */ } SchedulerStatus; typedef StgClosure *HaskellObj; @@ -58,26 +61,26 @@ HaskellObj rts_mkString ( char *s ); HaskellObj rts_apply ( HaskellObj, HaskellObj ); -/* DEPRECATED (use rts_mkPtr): */ -HaskellObj rts_mkAddr ( HsAddr a ); - /* ---------------------------------------------------------------------------- Deconstructing Haskell objects ------------------------------------------------------------------------- */ HsChar rts_getChar ( HaskellObj ); HsInt rts_getInt ( HaskellObj ); +HsInt8 rts_getInt8 ( HaskellObj ); +HsInt16 rts_getInt16 ( HaskellObj ); HsInt32 rts_getInt32 ( HaskellObj ); +HsInt64 rts_getInt64 ( HaskellObj ); HsWord rts_getWord ( HaskellObj ); +HsWord8 rts_getWord8 ( HaskellObj ); +HsWord16 rts_getWord16 ( HaskellObj ); HsWord32 rts_getWord32 ( HaskellObj ); +HsWord64 rts_getWord64 ( 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 @@ -92,10 +95,36 @@ rts_eval_ ( HaskellObj p, unsigned int stack_size, /*out*/HaskellObj *ret ); SchedulerStatus rts_evalIO ( HaskellObj p, /*out*/HaskellObj *ret ); +#if defined(COMPILING_RTS_MAIN) +/* Used by the RTS' main() only */ +SchedulerStatus +rts_mainEvalIO ( HaskellObj p, /*out*/HaskellObj *ret ); +#endif + +SchedulerStatus +rts_evalStableIO ( HsStablePtr s, /*out*/HsStablePtr *ret ); + SchedulerStatus rts_evalLazyIO ( HaskellObj p, unsigned int stack_size, /*out*/HaskellObj *ret ); void rts_checkSchedStatus ( char* site, SchedulerStatus rc); +/* -------------------------------------------------------------------------- + Wrapper closures + + These are used by foreign export and foreign import "wrapper" stubs. + ----------------------------------------------------------------------- */ + +extern StgClosure GHCziTopHandler_runIO_closure; +extern StgClosure GHCziTopHandler_runNonIO_closure; +#define runIO_closure (&GHCziTopHandler_runIO_closure) +#define runNonIO_closure (&GHCziTopHandler_runNonIO_closure) + +/* ------------------------------------------------------------------------ */ + +#ifdef __cplusplus +} +#endif + #endif /* RTSAPI_H */