diff options
| author | mycroft <mycroft@NetBSD.org> | 1998-09-11 12:50:05 +0000 |
|---|---|---|
| committer | mycroft <mycroft@NetBSD.org> | 1998-09-11 12:50:05 +0000 |
| commit | fb526e055ce7fc93c2d1e25d27ddcbb904326689 (patch) | |
| tree | 246edcbecaa293bb66c325bdd2d7878a35c17b1f /sys/compat/linux/common/linux_oldselect.c | |
| parent | 4e2ece10351d6d481d8324585b33261d0c47e49c (diff) | |
Substantial signal handling changes:
* Increase the size of sigset_t to accomodate 128 signals -- adding new
versions of sys_setprocmask(), sys_sigaction(), sys_sigpending() and
sys_sigsuspend() to handle the changed arguments.
* Abstract the guts of sys_sigaltstack(), sys_setprocmask(), sys_sigaction(),
sys_sigpending() and sys_sigsuspend() into separate functions, and call them
from all the emulations rather than hard-coding everything. (Avoids uses
the stackgap crap for these system calls.)
* Add a new flag (p_checksig) to indicate that a process may have signals
pending and userret() needs to do the full (slow) check.
* Eliminate SAS_ALTSTACK; it's exactly the inverse of SS_DISABLE.
* Correct emulation bugs with restoring SS_ONSTACK.
* Make the signal mask in the sigcontext always use the emulated mask format.
* Store signals internally in sigaction structures, rather than maintaining a
bunch of little sigsets for each SA_* bit.
* Keep track of where we put the signal trampoline, rather than figuring it out
in *_sendsig().
* Issue a warning when a non-emulated sigaction bit is observed.
* Add missing emulated signals, and a native SIGPWR (currently not used).
* Implement the `not reset when caught' semantics for relevant signals.
Note: Only code touched by the i386 port has been modified. Other ports and
emulations need to be updated.
Diffstat (limited to 'sys/compat/linux/common/linux_oldselect.c')
| -rw-r--r-- | sys/compat/linux/common/linux_oldselect.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/sys/compat/linux/common/linux_oldselect.c b/sys/compat/linux/common/linux_oldselect.c index 948227a8ba3..f6bb715ba22 100644 --- a/sys/compat/linux/common/linux_oldselect.c +++ b/sys/compat/linux/common/linux_oldselect.c @@ -1,4 +1,4 @@ -/* $NetBSD: linux_oldselect.c,v 1.45 1998/09/08 20:02:52 rvb Exp $ */ +/* $NetBSD: linux_oldselect.c,v 1.46 1998/09/11 12:50:08 mycroft Exp $ */ /* * Copyright (c) 1995 Frank van der Linden @@ -94,10 +94,10 @@ bsd_to_linux_wstat(status) if (WIFSIGNALED(*status)) *status = (*status & ~0177) | - bsd_to_linux_sig[WTERMSIG(*status)]; + native_to_linux_sig[WTERMSIG(*status)]; else if (WIFSTOPPED(*status)) *status = (*status & ~0xff00) | - (bsd_to_linux_sig[WSTOPSIG(*status)] << 8); + (native_to_linux_sig[WSTOPSIG(*status)] << 8); } /* @@ -134,7 +134,7 @@ linux_sys_waitpid(p, v, retval) if ((error = sys_wait4(p, &w4a, retval))) return error; - p->p_siglist &= ~sigmask(SIGCHLD); + sigdelset(&p->p_siglist, SIGCHLD); if (status != NULL) { if ((error = copyin(status, &tstat, sizeof tstat))) @@ -180,7 +180,7 @@ linux_sys_wait4(p, v, retval) if ((error = sys_wait4(p, &w4a, retval))) return error; - p->p_siglist &= ~sigmask(SIGCHLD); + sigdelset(&p->p_siglist, SIGCHLD); if (status != NULL) { if ((error = copyin(status, &tstat, sizeof tstat))) |
