Aha - I realize now that my program is linked -threaded, which is why the
IO manager gets started before main: (from rts/RtsStartup.c)
#if defined(THREADED_RTS)
ioManagerStart();
#endif
On Fri, Apr 27, 2012 at 6:57 AM, Gregory Collins <[email protected]>wrote:
> Have you thought about calling hs_init() from your own C main() function?
> You can set up the file descriptors however you like if you do this. See
> ยง8.2.1.1 here:
> http://www.haskell.org/ghc/docs/7.4.1/html/users_guide/ffi-ghc.html .
>
That's a good idea - Though I don't see how to call exactly to get my
original main function invoked. Reading the rts, looks like I want to call
hs_main, but pass in the magic top closure... not sure how to find that
(will do linker spelunking later). I see in haskeline source there is an
example of calling hs_init() in an alternative main. And there it just
calls some haskell function directly. But I notice that there is a whole
bunch of initialization and work done in hs_main() and real_main() in the
rts that would be missed by this approach.
- Mark
_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc