Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | #ifndef _ASM_GENERIC_SIGINFO_H |
| 2 | #define _ASM_GENERIC_SIGINFO_H |
| 3 | |
David Howells | 8a1ab31 | 2012-10-04 18:20:15 +0100 | [diff] [blame] | 4 | #include <uapi/asm-generic/siginfo.h> |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 5 | |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 6 | #define __SI_MASK 0xffff0000u |
| 7 | #define __SI_KILL (0 << 16) |
| 8 | #define __SI_TIMER (1 << 16) |
| 9 | #define __SI_POLL (2 << 16) |
| 10 | #define __SI_FAULT (3 << 16) |
| 11 | #define __SI_CHLD (4 << 16) |
| 12 | #define __SI_RT (5 << 16) |
| 13 | #define __SI_MESGQ (6 << 16) |
Will Drewry | a0727e8 | 2012-04-12 16:48:00 -0500 | [diff] [blame] | 14 | #define __SI_SYS (7 << 16) |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 15 | #define __SI_CODE(T,N) ((T) | ((N) & 0xffff)) |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 16 | |
| 17 | struct siginfo; |
| 18 | void do_schedule_next_timer(struct siginfo *info); |
| 19 | |
| 20 | #ifndef HAVE_ARCH_COPY_SIGINFO |
| 21 | |
| 22 | #include <linux/string.h> |
| 23 | |
| 24 | static inline void copy_siginfo(struct siginfo *to, struct siginfo *from) |
| 25 | { |
| 26 | if (from->si_code < 0) |
| 27 | memcpy(to, from, sizeof(*to)); |
| 28 | else |
| 29 | /* _sigchld is currently the largest know union member */ |
| 30 | memcpy(to, from, __ARCH_SI_PREAMBLE_SIZE + sizeof(from->_sifields._sigchld)); |
| 31 | } |
| 32 | |
| 33 | #endif |
| 34 | |
Al Viro | ce39596 | 2013-10-13 17:23:53 -0400 | [diff] [blame] | 35 | extern int copy_siginfo_to_user(struct siginfo __user *to, const struct siginfo *from); |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 36 | |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 37 | #endif |