summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorMarcel Moolenaar <marcel@FreeBSD.org>1999-09-29 15:18:46 +0000
committerMarcel Moolenaar <marcel@FreeBSD.org>1999-09-29 15:18:46 +0000
commit3cf3c5d9ddb2edd1033c0b8e612096b8b35b3bb4 (patch)
treef20b5cb25cf94c494095050b1f52676e7efd71f7 /include
parent956d3333cadea27513348a7718e9cfd5c26e9ba0 (diff)
Notes
Diffstat (limited to 'include')
-rw-r--r--include/signal.h63
-rw-r--r--include/ucontext.h36
2 files changed, 91 insertions, 8 deletions
diff --git a/include/signal.h b/include/signal.h
index 69832e068d1e..2e846e621f45 100644
--- a/include/signal.h
+++ b/include/signal.h
@@ -31,6 +31,8 @@
* SUCH DAMAGE.
*
* @(#)signal.h 8.3 (Berkeley) 3/30/94
+ *
+ * $FreeBSD$
*/
#ifndef _SIGNAL_H_
@@ -40,6 +42,7 @@
#include <sys/_posix.h>
#include <machine/ansi.h>
#include <sys/signal.h>
+#include <sys/time.h>
#if !defined(_ANSI_SOURCE) && !defined(_POSIX_SOURCE)
extern __const char *__const sys_signame[NSIG];
@@ -67,18 +70,18 @@ int sigwait __P((const sigset_t *, int *));
__BEGIN_DECLS
int sigqueue __P((_BSD_PID_T_, int, const union sigval));
-int sigtimedwait __P((const sigset_t *, siginfo_t *));
+int sigtimedwait __P((const sigset_t *, siginfo_t *, const struct timespec *));
int sigwaitinfo __P((const sigset_t *, siginfo_t *));
__END_DECLS
#endif
#ifndef _POSIX_SOURCE
int killpg __P((_BSD_PID_T_, int));
-int sigaltstack __P((const struct sigaltstack *, struct sigaltstack *));
+int sigaltstack __P((const stack_t *, stack_t *));
int sigblock __P((int));
int siginterrupt __P((int, int));
int sigpause __P((int));
-int sigreturn __P((struct sigcontext *));
+int sigreturn __P((ucontext_t *));
int sigsetmask __P((int));
int sigstack __P((const struct sigstack *, struct sigstack *));
int sigvec __P((int, struct sigvec *, struct sigvec *));
@@ -89,11 +92,55 @@ __END_DECLS
#ifndef _ANSI_SOURCE
/* List definitions after function declarations, or Reiser cpp gets upset. */
-#define sigaddset(set, signo) (*(set) |= 1 << ((signo) - 1), 0)
-#define sigdelset(set, signo) (*(set) &= ~(1 << ((signo) - 1)), 0)
-#define sigemptyset(set) (*(set) = 0, 0)
-#define sigfillset(set) (*(set) = ~(sigset_t)0, 0)
-#define sigismember(set, signo) ((*(set) & (1 << ((signo) - 1))) != 0)
+extern __inline int sigaddset(sigset_t *set, int signo)
+{
+
+ if (signo <= 0 || signo > _SIG_MAXSIG) {
+ /* errno = EINVAL; */
+ return (-1);
+ }
+ set->__bits[_SIG_WORD(signo)] |= _SIG_BIT(signo);
+ return (0);
+}
+
+extern __inline int sigdelset(sigset_t *set, int signo)
+{
+
+ if (signo <= 0 || signo > _SIG_MAXSIG) {
+ /* errno = EINVAL; */
+ return (-1);
+ }
+ set->__bits[_SIG_WORD(signo)] &= ~_SIG_BIT(signo);
+ return (0);
+}
+
+extern __inline int sigemptyset(sigset_t *set)
+{
+ int i;
+
+ for (i = 0; i < _SIG_WORDS; i++)
+ set->__bits[i] = 0;
+ return (0);
+}
+
+extern __inline int sigfillset(sigset_t *set)
+{
+ int i;
+
+ for (i = 0; i < _SIG_WORDS; i++)
+ set->__bits[i] = ~(unsigned int)0;
+ return (0);
+}
+
+extern __inline int sigismember(__const sigset_t *set, int signo)
+{
+
+ if (signo <= 0 || signo > _SIG_MAXSIG) {
+ /* errno = EINVAL; */
+ return (-1);
+ }
+ return ((set->__bits[_SIG_WORD(signo)] & _SIG_BIT(signo)) ? 1 : 0);
+}
#endif /* !_ANSI_SOURCE */
#endif /* !_SIGNAL_H_ */
diff --git a/include/ucontext.h b/include/ucontext.h
new file mode 100644
index 000000000000..f868980b79f7
--- /dev/null
+++ b/include/ucontext.h
@@ -0,0 +1,36 @@
+/*-
+ * Copyright (c) 1999 Marcel Moolenaar
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer
+ * in this position and unchanged.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#ifndef _UCONTEXT_H_
+#define _UCONTEXT_H_ 1
+
+#include <sys/ucontext.h>
+
+#endif /* _UCONTEXT_H_ */