Coming back to the subject of signal preemptors...

Why do we need them at all?  Why not just use the existing POSIX signal
facilities?

We install a signal handler, saving the old signal handler, check the
faulting memory address inside the new signal handler, and relay the signal
on to the saved signal handler if it doesn't match.

Also, codesearch.debian.net shows that the only place signal preemptors are
used is in the hurd source tree itself (no great surprise), and the four
places that it's used there (libpager, libstore, libdiskfs, and exec) don't
do anything else with SIGBUS or SIGSEGV, so we don't even have to worry
about nested signal handlers, really.  We can just catch the signals.

Signal preemptors, as a non standard addition to the already complicated
POSIX signal API, raise questions like, what happens when a signal is
preempted while a debugger is attached?  Does the debugger get the signal
before the preemptor, or does the preemptor fire without waiting for the
debugger?

    agape
    brent

Reply via email to