aboutsummaryrefslogtreecommitdiff
path: root/sys/sys/signalvar.h
diff options
context:
space:
mode:
authorLuoqi Chen <luoqi@FreeBSD.org>1999-10-11 20:33:17 +0000
committerLuoqi Chen <luoqi@FreeBSD.org>1999-10-11 20:33:17 +0000
commit645682fd40b5855a1dfbca5ddb330dda7cf5ddc0 (patch)
tree7cad9d7dad8a4c0a9a157153dada2dbbd270e491 /sys/sys/signalvar.h
parent456b2f80635b3455ab32f16fa5460146f93583c8 (diff)
downloadsrc-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.h11
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)