Question about which tools to use, bugs, the best way to implement a function, etc should go here. Don't forget to see if your question is answered in the wiki first! When in doubt post here.
I've highlighted the interesting part in bold: It removes the signal handler whenever raise() is called! WHAT?!?! why? I've implemented an ugly hack involving calling signal() three times whenever I send a signal to save and reinstall the correct signal handler but I shouldn't have to do this - this behaviour is not in the POSIX spec - what's it all about?
This is a 'feature' only in the newlib emulation of signals for embedded targets (i.e. in signal.c). If you provide your own implementations of kill and signal, then it shouldn't be a problem (this is also required for sending signals between processes). They note it at the top of the file too:
signal.c wrote:the default handling for the signal is restored (SIG_DFL), and the function func is called with sig as its argument
Still, I've absolutely no idea why they do it though. Perhaps it seemed more logical to have this particular functionality on the device the original author was developing for. I have to agree with pcmattman, the mailing list is probably the way to go.