diff options
| author | Marcel Moolenaar <marcel@FreeBSD.org> | 1999-09-29 15:18:46 +0000 |
|---|---|---|
| committer | Marcel Moolenaar <marcel@FreeBSD.org> | 1999-09-29 15:18:46 +0000 |
| commit | 3cf3c5d9ddb2edd1033c0b8e612096b8b35b3bb4 (patch) | |
| tree | f20b5cb25cf94c494095050b1f52676e7efd71f7 /include | |
| parent | 956d3333cadea27513348a7718e9cfd5c26e9ba0 (diff) | |
Notes
Diffstat (limited to 'include')
| -rw-r--r-- | include/signal.h | 63 | ||||
| -rw-r--r-- | include/ucontext.h | 36 |
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_ */ |
