[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
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
-------------- 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