X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fincludes%2FRtsAPI.h;h=cf0792307d051251c94b9da79cf420e7e99ebba8;hb=9af77fa423926fbda946b31e174173d0ec5ebac8;hp=ab5687455a5eae5ab12ff115e90bc57382de8702;hpb=305e5f5702b5a468300433028b261f153087f1e9;p=ghc-hetmet.git diff --git a/ghc/includes/RtsAPI.h b/ghc/includes/RtsAPI.h index ab56874..cf079230 100644 --- a/ghc/includes/RtsAPI.h +++ b/ghc/includes/RtsAPI.h @@ -1,5 +1,5 @@ /* ---------------------------------------------------------------------------- - * $Id: RtsAPI.h,v 1.22 2001/08/03 16:30:13 sof 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,9 +61,6 @@ HaskellObj rts_mkString ( char *s ); HaskellObj rts_apply ( HaskellObj, HaskellObj ); -/* DEPRECATED (use rts_mkPtr): */ -HaskellObj rts_mkAddr ( HsAddr a ); - /* ---------------------------------------------------------------------------- Deconstructing Haskell objects ------------------------------------------------------------------------- */ @@ -81,9 +81,6 @@ HsDouble rts_getDouble ( HaskellObj ); HsStablePtr rts_getStablePtr ( HaskellObj ); HsBool rts_getBool ( HaskellObj ); -/* DEPRECATED (use rts_getPtr): */ -HsAddr rts_getAddr ( HaskellObj ); - /* ---------------------------------------------------------------------------- Evaluating Haskell expressions @@ -98,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 */