X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2FHsFFI.c;fp=rts%2FHsFFI.c;h=350bcfbdec88e25ffc8320f6a3d36492af2a0635;hb=0065d5ab628975892cea1ec7303f968c3338cbe1;hp=0000000000000000000000000000000000000000;hpb=28a464a75e14cece5db40f2765a29348273ff2d2;p=ghc-hetmet.git diff --git a/rts/HsFFI.c b/rts/HsFFI.c new file mode 100644 index 0000000..350bcfb --- /dev/null +++ b/rts/HsFFI.c @@ -0,0 +1,40 @@ +/* ----------------------------------------------------------------------------- + * + * (c) The GHC Team, 2005 + * + * RTS entry points as mandated by the FFI addendum to the Haskell 98 report + * + * ---------------------------------------------------------------------------*/ + +#include "HsFFI.h" +#include "Rts.h" + +// hs_init and hs_exit are defined in RtsStartup.c + +void +hs_set_argv(int argc, char *argv[]) +{ + setProgArgv(argc,argv); +} + +void +hs_perform_gc(void) +{ + /* Hmmm, the FFI spec is a bit vague, but it seems to imply a major GC... */ + performMajorGC(); +} + +void +hs_free_stable_ptr(HsStablePtr sp) +{ + /* The cast is for clarity only, both HsStablePtr and StgStablePtr are + typedefs for void*. */ + freeStablePtr((StgStablePtr)sp); +} + +void +hs_free_fun_ptr(HsFunPtr fp) +{ + /* I simply *love* all these similar names... */ + freeHaskellFunctionPtr(fp); +}