HsFFI.c 956 Bytes
Newer Older
1
/* -----------------------------------------------------------------------------
2
 * $Id: HsFFI.c,v 1.2 2003/01/28 16:30:06 simonmar Exp $
3 4 5 6 7 8 9 10 11 12
 *
 * (c) The GHC Team, 2002
 *
 * RTS entry points as mandated by the FFI addendum to the Haskell 98 report
 *
 * ---------------------------------------------------------------------------*/

#include "HsFFI.h"
#include "Rts.h"

13
// hs_init and hs_exit are defined in RtsStartup.c
14 15 16 17

void
hs_set_argv(int argc, char *argv[])
{
18 19
    prog_argc = argc;
    prog_argv = argv;
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
}

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);
}