diff options
author | kib <kib@FreeBSD.org> | 2016-02-12 07:38:19 +0000 |
---|---|---|
committer | kib <kib@FreeBSD.org> | 2016-02-12 07:38:19 +0000 |
commit | a05a278552bfbdc67dd026be8a748c627b57d0c4 (patch) | |
tree | 783f901008bac7a377fe9c52843c1f80c9e84512 /sys/sys/signal.h | |
parent | 7af72453b7efe688c01e9d79607f455c01914ba7 (diff) | |
download | FreeBSD-src-a05a278552bfbdc67dd026be8a748c627b57d0c4.zip FreeBSD-src-a05a278552bfbdc67dd026be8a748c627b57d0c4.tar.gz |
POSIX states that #include <signal.h> shall make both mcontext_t and
ucontext_t available. Our code even has XXX comment about this.
Add a bit of compliance by moving struct __ucontext definition into
sys/_ucontext.h and including it into signal.h and sys/ucontext.h.
Several machine/ucontext.h headers were changed to use namespace-safe
types (like uint64_t->__uint64_t) to not depend on sys/types.h.
struct __stack_t from sys/signal.h is made always visible in private
namespace to satisfy sys/_ucontext.h requirements.
Apparently mips _types.h pollutes global namespace with f_register_t
type definition. This commit does not try to fix the issue.
PR: 207079
Reported and tested by: Ting-Wei Lan <lantw44@gmail.com>
Sponsored by: The FreeBSD Foundation
MFC after: 2 weeks
Diffstat (limited to 'sys/sys/signal.h')
-rw-r--r-- | sys/sys/signal.h | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/sys/sys/signal.h b/sys/sys/signal.h index 259c39a..ab8fcf4 100644 --- a/sys/sys/signal.h +++ b/sys/sys/signal.h @@ -354,18 +354,10 @@ typedef void __siginfohandler_t(int, struct __siginfo *, void *); #endif #if __XSI_VISIBLE -/* - * Structure used in sigaltstack call. - */ #if __BSD_VISIBLE -typedef struct sigaltstack { -#else -typedef struct { +#define __stack_t sigaltstack #endif - void *ss_sp; /* signal stack base */ - __size_t ss_size; /* signal stack length */ - int ss_flags; /* SS_DISABLE and/or SS_ONSTACK */ -} stack_t; +typedef struct __stack_t stack_t; #define SS_ONSTACK 0x0001 /* take signal on alternate stack */ #define SS_DISABLE 0x0004 /* disable taking signals on alternate stack */ @@ -373,6 +365,17 @@ typedef struct { #define SIGSTKSZ (MINSIGSTKSZ + 32768) /* recommended stack size */ #endif +/* + * Structure used in sigaltstack call. Its definition is always + * needed for __ucontext. If __BSD_VISIBLE is defined, the structure + * tag is actually sigaltstack. + */ +struct __stack_t { + void *ss_sp; /* signal stack base */ + __size_t ss_size; /* signal stack length */ + int ss_flags; /* SS_DISABLE and/or SS_ONSTACK */ +}; + #if __BSD_VISIBLE /* * 4.3 compatibility: |