siginfo_mm.h 2.0 KB

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