/usr/lib/klibc/include/signal.h is in libklibc-dev 1.5.25-1ubuntu2.
This file is owned by root:root, with mode 0o664.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 | /*
* signal.h
*/
#ifndef _SIGNAL_H
#define _SIGNAL_H
#include <klibc/compiler.h>
#include <klibc/extern.h>
#include <string.h> /* For memset() */
#include <limits.h> /* For LONG_BIT */
#include <sys/types.h>
#include <klibc/archsignal.h> /* Includes <asm/signal.h> if appropriate */
/* glibc seems to use sig_atomic_t as "int" pretty much on all architectures.
Do the same, but allow the architecture to override. */
#ifndef _KLIBC_HAS_ARCH_SIG_ATOMIC_T
typedef int sig_atomic_t;
#endif
/* Some architectures don't define these */
#ifndef SA_RESETHAND
# define SA_RESETHAND SA_ONESHOT
#endif
#ifndef SA_NODEFER
# define SA_NODEFER SA_NOMASK
#endif
/* Some architectures define NSIG and not _NSIG or vice versa */
#ifndef NSIG
# define NSIG _NSIG
#endif
#ifndef _NSIG
# define _NSIG NSIG
#endif
/* If we don't have any real-time signals available to userspace,
hide them all */
#if SIGRTMAX <= SIGRTMIN
# undef SIGRTMIN
# undef SIGRTMAX
#endif
/* The kernel header files are inconsistent whether or not
SIGRTMAX is inclusive or exclusive. POSIX seems to state that
it's inclusive, however. */
#if SIGRTMAX >= _NSIG
# undef SIGRTMAX
# define SIGRTMAX (_NSIG-1)
#endif
__extern const char *const sys_siglist[_NSIG];
__extern const char *const sys_sigabbrev[_NSIG];
/* This assumes sigset_t is either an unsigned long or an array of such,
and that _NSIG_BPW in the kernel is always LONG_BIT */
static __inline__ int sigemptyset(sigset_t * __set)
{
memset(__set, 0, sizeof *__set);
return 0;
}
static __inline__ int sigfillset(sigset_t * __set)
{
memset(__set, ~0, sizeof *__set);
return 0;
}
static __inline__ int sigaddset(sigset_t * __set, int __signum)
{
unsigned long *__lset = (unsigned long *)__set;
__signum--; /* Signal 0 is not in the set */
__lset[__signum / LONG_BIT] |= 1UL << (__signum % LONG_BIT);
return 0;
}
static __inline__ int sigdelset(sigset_t * __set, int __signum)
{
unsigned long *__lset = (unsigned long *)__set;
__signum--; /* Signal 0 is not in the set */
__lset[__signum / LONG_BIT] &= ~(1UL << (__signum % LONG_BIT));
return 0;
}
static __inline__ int sigismember(sigset_t * __set, int __signum)
{
unsigned long *__lset = (unsigned long *)__set;
__signum--; /* Signal 0 is not in the set */
return (int)((__lset[__signum / LONG_BIT] >> (__signum % LONG_BIT)) &
1);
}
__extern __sighandler_t __signal(int, __sighandler_t, int);
#ifndef signal
__extern __sighandler_t signal(int, __sighandler_t);
#endif
__extern __sighandler_t sysv_signal(int, __sighandler_t);
__extern __sighandler_t bsd_signal(int, __sighandler_t);
__extern int sigaction(int, const struct sigaction *, struct sigaction *);
__extern int sigprocmask(int, const sigset_t *, sigset_t *);
__extern int sigpending(sigset_t *);
__extern int sigsuspend(const sigset_t *);
__extern int raise(int);
__extern int kill(pid_t, int);
#endif /* _SIGNAL_H */
|