1#ifndef _M68K_SIGINFO_H 2#define _M68K_SIGINFO_H 3 4#define HAVE_ARCH_SIGINFO_T 5#define HAVE_ARCH_COPY_SIGINFO 6 7#include <asm-generic/siginfo.h> 8 9typedef struct siginfo { 10 int si_signo; 11 int si_errno; 12 int si_code; 13 14 union { 15 int _pad[SI_PAD_SIZE]; 16 17 /* kill() */ 18 struct { 19 __kernel_pid_t _pid; /* sender's pid */ 20 __kernel_uid_t _uid; /* backwards compatibility */ 21 __kernel_uid32_t _uid32; /* sender's uid */ 22 } _kill; 23 24 /* POSIX.1b timers */ 25 struct { 26 timer_t _tid; /* timer id */ 27 int _overrun; /* overrun count */ 28 char _pad[sizeof( __ARCH_SI_UID_T) - sizeof(int)]; 29 sigval_t _sigval; /* same as below */ 30 int _sys_private; /* not to be passed to user */ 31 } _timer; 32 33 /* POSIX.1b signals */ 34 struct { 35 __kernel_pid_t _pid; /* sender's pid */ 36 __kernel_uid_t _uid; /* backwards compatibility */ 37 sigval_t _sigval; 38 __kernel_uid32_t _uid32; /* sender's uid */ 39 } _rt; 40 41 /* SIGCHLD */ 42 struct { 43 __kernel_pid_t _pid; /* which child */ 44 __kernel_uid_t _uid; /* backwards compatibility */ 45 int _status; /* exit code */ 46 clock_t _utime; 47 clock_t _stime; 48 __kernel_uid32_t _uid32; /* sender's uid */ 49 } _sigchld; 50 51 /* SIGILL, SIGFPE, SIGSEGV, SIGBUS */ 52 struct { 53 void *_addr; /* faulting insn/memory ref. */ 54 } _sigfault; 55 56 /* SIGPOLL */ 57 struct { 58 int _band; /* POLL_IN, POLL_OUT, POLL_MSG */ 59 int _fd; 60 } _sigpoll; 61 } _sifields; 62} siginfo_t; 63 64#define UID16_SIGINFO_COMPAT_NEEDED 65 66/* 67 * How these fields are to be accessed. 68 */ 69#undef si_uid 70#ifdef __KERNEL__ 71#define si_uid _sifields._kill._uid32 72#define si_uid16 _sifields._kill._uid 73#else 74#define si_uid _sifields._kill._uid 75#endif 76 77#ifdef __KERNEL__ 78 79#include <linux/string.h> 80 81static inline void copy_siginfo(struct siginfo *to, struct siginfo *from) 82{ 83 if (from->si_code < 0) 84 memcpy(to, from, sizeof(*to)); 85 else 86 /* _sigchld is currently the largest know union member */ 87 memcpy(to, from, 3*sizeof(int) + sizeof(from->_sifields._sigchld)); 88} 89 90#endif /* __KERNEL__ */ 91 92#endif 93