1#ifndef _ASM_GENERIC_SIGINFO_H 2#define _ASM_GENERIC_SIGINFO_H 3 4#include <uapi/asm-generic/siginfo.h> 5 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) 14#define __SI_SYS (7 << 16) 15#define __SI_CODE(T,N) ((T) | ((N) & 0xffff)) 16 17struct siginfo; 18void do_schedule_next_timer(struct siginfo *info); 19 20#ifndef HAVE_ARCH_COPY_SIGINFO 21 22#include <linux/string.h> 23 24static 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 35extern int copy_siginfo_to_user(struct siginfo __user *to, const struct siginfo *from); 36 37#endif 38