On Fri, Aug 5, 2011 at 1:38 AM, Matthew Mondor <mm_lists@pulsar-zone.net> wrote:
Is CATCH-SIGNAL in any way currently already relied-upon by some
software?  Also, does it try to be compatible in any way with an
existing interface?  Is it expected to eventually do anything on
non-POSIX systems?

CATCH-SIGNAL is expected to rule what ECL does with external interrupts and it should work in systems that do not implement full POSIX, such as Windows -- where we rely only on signal() at the moment but might be extended to the exception handler.

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.

Juanjo

--
Instituto de Física Fundamental, CSIC
c/ Serrano, 113b, Madrid 28006 (Spain)
http://juanjose.garciaripoll.googlepages.com