[Ecls-list] Threads and signal masks

Juan Jose Garcia-Ripoll juanjose.garciaripoll at googlemail.com
Sat Aug 6 20:50:20 UTC 2011

On Fri, Aug 5, 2011 at 1:38 AM, Matthew Mondor <mm_lists at 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

 - Each thread keeps a copy of the process sigmask (POSIX) and it is
   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
   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)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/ecl-devel/attachments/20110806/8430fa3a/attachment.html>

More information about the ecl-devel mailing list