siginfo.h 2.0 KB

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