#include <sys/cdefs.h>
#include <sys/appleapiopts.h>
+#include <Availability.h>
#define __DARWIN_NSIG 32 /* counting 0; could be 33 (mask is 1-32) */
#include <sys/_types.h>
#include <machine/_mcontext.h>
+
+#ifndef KERNEL
+#include <sys/_pthread/_pthread_attr_t.h>
+#endif /* KERNEL */
+
#include <sys/_types/_sigaltstack.h>
#include <sys/_types/_ucontext.h>
#include <sys/_types/_pid_t.h>
-#include <sys/_types/_pthread_attr_t.h>
#include <sys/_types/_sigset_t.h>
#include <sys/_types/_size_t.h>
#include <sys/_types/_uid_t.h>
#define SIGEV_SIGNAL 1 /* aio - completion notification */
#define SIGEV_THREAD 3 /* [NOTIMP] [RTS] call notification function */
+#ifndef KERNEL
struct sigevent {
int sigev_notify; /* Notification type */
int sigev_signo; /* Signal number */
void (*sigev_notify_function)(union sigval); /* Notification function */
pthread_attr_t *sigev_notify_attributes; /* Notification attributes */
};
+#endif /* KERNEL */
#ifdef BSD_KERNEL_PRIVATE
/* This will provide 64bit register set in a 32bit user address space */
#define SA_64REGSET 0x0200 /* signal handler with SA_SIGINFO args with 64bit regs information */
#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
+#ifdef BSD_KERNEL_PRIVATE
+#define SA_VALIDATE_SIGRETURN_FROM_SIGTRAMP 0x0400 /* use token to validate sigreturn was called from matching sigtramp */
+#endif /* BSD_KERNEL_PRIVATE */
/* the following are the only bits we support from user space, the
* rest are for kernel use only.
* signals delivered on a per-thread basis.
*/
#define threadmask (sigmask(SIGILL)|sigmask(SIGTRAP)|\
- sigmask(SIGIOT)|sigmask(SIGEMT)|\
+ sigmask(SIGABRT)|sigmask(SIGEMT)|\
sigmask(SIGFPE)|sigmask(SIGBUS)|\
sigmask(SIGSEGV)|sigmask(SIGSYS)|\
- sigmask(SIGPIPE))
+ sigmask(SIGPIPE)|sigmask(SIGKILL))
-#define workq_threadmask (threadmask | sigcantmask)
+#define workq_threadmask ((threadmask | sigcantmask | sigmask(SIGPROF)) & ~sigmask(SIGABRT))
/*
* Signals carried across exec.