I have uploaded some updates to ECL, described in this excerpt from CHANGELOG.
- Each thread keeps a copy of the process sigmask (POSIX) and it is inherited
by children thread. The sigmask can be manipulated by the function
EXT:CATCH-SIGNAL which has the signature
(ext:catch-signal signal-code action &key process)
The ACTION is one of :IGNORE, :DEFAULT, :CATCH, determining what ECL does
when it receives the signal, or it can be :MASK/:UNMASK to determine whether
the process is blocking the signal or not. The optional argument :PROCESS
only applies to :MASK/:UNMASK and it can be the current process, some
process that has not been activated or any other value (indicating that
the function has a global effect, as sigprocmask).
As I said, it goes a bit beyond what you submitted, maintaining an interface that dates back to KCL and still working with multithreaded environments. Limited testing suggests that it works.
Instituto de Física Fundamental, CSIC
c/ Serrano, 113b, Madrid 28006 (Spain) http://juanjose.garciaripoll.googlepages.com