diff options
author | Luoqi Chen <luoqi@FreeBSD.org> | 1999-10-11 20:33:17 +0000 |
---|---|---|
committer | Luoqi Chen <luoqi@FreeBSD.org> | 1999-10-11 20:33:17 +0000 |
commit | 645682fd40b5855a1dfbca5ddb330dda7cf5ddc0 (patch) | |
tree | 7cad9d7dad8a4c0a9a157153dada2dbbd270e491 /sys/sys/signalvar.h | |
parent | 456b2f80635b3455ab32f16fa5460146f93583c8 (diff) | |
download | src-645682fd40b5855a1dfbca5ddb330dda7cf5ddc0.tar.gz src-645682fd40b5855a1dfbca5ddb330dda7cf5ddc0.zip |
Add a per-signal flag to mark handlers registered with osigaction, so we
can provide the correct context to each signal handler.
Fix broken sigsuspend(): don't use p_oldsigmask as a flag, use SAS_OLDMASK
as we did before the linuxthreads support merge (submitted by bde).
Move ps_sigstk from to p_sigacts to the main proc structure since signal
stack should not be shared among threads.
Move SAS_OLDMASK and SAS_ALTSTACK flags from sigacts::ps_flags to proc::p_flag.
Move PS_NOCLDSTOP and PS_NOCLDWAIT flags from proc::p_flag to procsig::ps_flag.
Reviewed by: marcel, jdp, bde
Notes
Notes:
svn path=/head/; revision=52140
Diffstat (limited to 'sys/sys/signalvar.h')
-rw-r--r-- | sys/sys/signalvar.h | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/sys/sys/signalvar.h b/sys/sys/signalvar.h index 99b26bdd3fe7..554d649c789f 100644 --- a/sys/sys/signalvar.h +++ b/sys/sys/signalvar.h @@ -59,15 +59,9 @@ struct sigacts { sigset_t ps_sigreset; /* signals that reset when caught */ sigset_t ps_signodefer; /* signals not masked while handled */ sigset_t ps_siginfo; /* signals that want SA_SIGINFO args */ - int ps_flags; /* signal flags, below */ - stack_t ps_sigstk; /* sp & on stack state variable */ - sigset_t ps_usertramp; /* SunOS compat; libc sigtramp XXX */ + sigset_t ps_osigset; /* signals that use osigset_t */ }; -/* signal flags */ -#define SAS_OLDMASK 0x01 /* need to restore mask before pause */ -#define SAS_ALTSTACK 0x02 /* have alternate signal stack */ - /* * Compatibility */ @@ -154,6 +148,9 @@ typedef void __osiginfohandler_t __P((int, osiginfo_t *, void *)); (set1).__bits[__i] &= ~(set2).__bits[__i]; \ } while (0) +#define SIGSETLO(set1, set2) ((set1).__bits[0] = (set2).__bits[0]) +#define SIGSETOLD(set, oset) ((set).__bits[0] = (oset)) + #define SIG_CANTMASK(set) \ SIGDELSET(set, SIGKILL), SIGDELSET(set, SIGSTOP) |