X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fincludes%2FRtsAPI.h;h=97a976b64735e3f5bdec3476db051787a69ebf80;hb=ba2843abdfe6f055777e4e66e8add769fce31d29;hp=cf0792307d051251c94b9da79cf420e7e99ebba8;hpb=ed6e72256134cabc87c688b9648968557f8f551f;p=ghc-hetmet.git diff --git a/ghc/includes/RtsAPI.h b/ghc/includes/RtsAPI.h index cf079230..97a976b 100644 --- a/ghc/includes/RtsAPI.h +++ b/ghc/includes/RtsAPI.h @@ -1,5 +1,5 @@ /* ---------------------------------------------------------------------------- - * $Id: RtsAPI.h,v 1.30 2002/09/05 08:58:55 simonmar Exp $ + * $Id: RtsAPI.h,v 1.34 2003/02/06 09:56:07 simonmar Exp $ * * (c) The GHC Team, 1998-1999 * @@ -35,8 +35,22 @@ 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[] ); +extern void setProgArgv ( int argc, char *argv[] ); + + +/* ---------------------------------------------------------------------------- + Locking. + + In a multithreaded environments, you have to surround all access to the + RtsAPI with these calls. + ------------------------------------------------------------------------- */ + +void +rts_lock ( void ); + +void +rts_unlock ( void ); /* ---------------------------------------------------------------------------- Building Haskell objects from C datatypes. @@ -53,6 +67,7 @@ HaskellObj rts_mkWord16 ( HsWord16 w ); HaskellObj rts_mkWord32 ( HsWord32 w ); HaskellObj rts_mkWord64 ( HsWord64 w ); HaskellObj rts_mkPtr ( HsPtr a ); +HaskellObj rts_mkFunPtr ( HsFunPtr a ); HaskellObj rts_mkFloat ( HsFloat f ); HaskellObj rts_mkDouble ( HsDouble f ); HaskellObj rts_mkStablePtr ( HsStablePtr s ); @@ -76,6 +91,7 @@ HsWord16 rts_getWord16 ( HaskellObj ); HsWord32 rts_getWord32 ( HaskellObj ); HsWord64 rts_getWord64 ( HaskellObj ); HsPtr rts_getPtr ( HaskellObj ); +HsFunPtr rts_getFunPtr ( HaskellObj ); HsFloat rts_getFloat ( HaskellObj ); HsDouble rts_getDouble ( HaskellObj ); HsStablePtr rts_getStablePtr ( HaskellObj ); @@ -85,6 +101,8 @@ HsBool rts_getBool ( HaskellObj ); Evaluating Haskell expressions The versions ending in '_' allow you to specify an initial stack size. + Note that these calls may cause Garbage Collection, so all HaskellObj + references are rendered invalid by these calls. ------------------------------------------------------------------------- */ SchedulerStatus rts_eval ( HaskellObj p, /*out*/HaskellObj *ret );