On Wed, Jul 1, 2015 at 3:14 PM, Jakub Zalewski <jakzale@gmail.com> wrote:
Dear all,

I am working on porting GHC to [native client](https://developer.chrome.com/native-client) and I am currently trying to figure out how to port the RTS.

On POSIX systems RTS seems to depend on two POSIX signals: timer signal and interrupt signal; while native client has very limited POSIX signal support --- for instance it does not define *siginfo_t* (which is referenced in the base package).

So far, I know how to deal with the dependency on the timer signal, as while browsing the source code in rts/posix/Itimer.c, I noticed that on iOS the timer is not using POSIX signals to implement the timer signal.

I wanted to ask if there are any other POSIX signal dependencies in the RTS, and would it safe to disable any signal handling in the RTS if I know that there will be no interrupt signals sent to the RTS?

I don't know the answer to your question, but for an additional data point  you might look at the HalVM: https://github.com/galoisinc/halvm

For the specific case of timers it may not be helpful (for all I know it uses some xen magic to get a timer interrupt), but it should be similar to native-client support in that the HalVM provides the RTS with a stripped down libc.

Jason