diff options
Diffstat (limited to 'kernel/include/asm-generic/siginfo.h')
-rw-r--r-- | kernel/include/asm-generic/siginfo.h | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/kernel/include/asm-generic/siginfo.h b/kernel/include/asm-generic/siginfo.h new file mode 100644 index 000000000..3d1a3af5c --- /dev/null +++ b/kernel/include/asm-generic/siginfo.h @@ -0,0 +1,37 @@ +#ifndef _ASM_GENERIC_SIGINFO_H +#define _ASM_GENERIC_SIGINFO_H + +#include <uapi/asm-generic/siginfo.h> + +#define __SI_MASK 0xffff0000u +#define __SI_KILL (0 << 16) +#define __SI_TIMER (1 << 16) +#define __SI_POLL (2 << 16) +#define __SI_FAULT (3 << 16) +#define __SI_CHLD (4 << 16) +#define __SI_RT (5 << 16) +#define __SI_MESGQ (6 << 16) +#define __SI_SYS (7 << 16) +#define __SI_CODE(T,N) ((T) | ((N) & 0xffff)) + +struct siginfo; +void do_schedule_next_timer(struct siginfo *info); + +#ifndef HAVE_ARCH_COPY_SIGINFO + +#include <linux/string.h> + +static inline void copy_siginfo(struct siginfo *to, struct siginfo *from) +{ + if (from->si_code < 0) + memcpy(to, from, sizeof(*to)); + else + /* _sigchld is currently the largest know union member */ + memcpy(to, from, __ARCH_SI_PREAMBLE_SIZE + sizeof(from->_sifields._sigchld)); +} + +#endif + +extern int copy_siginfo_to_user(struct siginfo __user *to, const struct siginfo *from); + +#endif |