summaryrefslogtreecommitdiff
path: root/rts/HsFFI.c
diff options
context:
space:
mode:
Diffstat (limited to 'rts/HsFFI.c')
-rw-r--r--rts/HsFFI.c40
1 files changed, 40 insertions, 0 deletions
diff --git a/rts/HsFFI.c b/rts/HsFFI.c
new file mode 100644
index 0000000000..350bcfbdec
--- /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);
+}