diff options
| author | Linus Torvalds <torvalds@home.transmeta.com> | 2002-10-15 18:29:22 -0700 |
|---|---|---|
| committer | Linus Torvalds <torvalds@home.transmeta.com> | 2002-10-15 18:29:22 -0700 |
| commit | 932d934b4c1595bcd2154a7343aaa29c5d645061 (patch) | |
| tree | 94b3d198042dba9df3e342e82dc8a8bf7ce6a0b8 /include | |
| parent | ffbbaa20150838a400f1f223370ea05b79c5f3d3 (diff) | |
| parent | 717781e2e357575eaf4dfe499b05139db6464c5e (diff) | |
Merge master.kernel.org:/home/davem/BK/sparc-2.5
into home.transmeta.com:/home/torvalds/v2.5/linux
Diffstat (limited to 'include')
| -rw-r--r-- | include/asm-generic/siginfo.h | 28 | ||||
| -rw-r--r-- | include/asm-sparc/siginfo.h | 72 | ||||
| -rw-r--r-- | include/asm-sparc/unistd.h | 2 | ||||
| -rw-r--r-- | include/asm-sparc64/siginfo.h | 73 | ||||
| -rw-r--r-- | include/asm-sparc64/unistd.h | 2 |
5 files changed, 29 insertions, 148 deletions
diff --git a/include/asm-generic/siginfo.h b/include/asm-generic/siginfo.h index 8e6f81b7a524..f246b2a15eb5 100644 --- a/include/asm-generic/siginfo.h +++ b/include/asm-generic/siginfo.h @@ -8,9 +8,21 @@ typedef union sigval { void *sival_ptr; } sigval_t; +/* + * This is the size (including padding) of the part of the + * struct siginfo that is before the union. + */ +#ifndef __ARCH_SI_PREAMBLE_SIZE +#define __ARCH_SI_PREAMBLE_SIZE (3 * sizeof(int)) +#endif + #define SI_MAX_SIZE 128 #ifndef SI_PAD_SIZE -#define SI_PAD_SIZE ((SI_MAX_SIZE/sizeof(int)) - 3) +#define SI_PAD_SIZE ((SI_MAX_SIZE - __ARCH_SI_PREAMBLE_SIZE) / sizeof(int)) +#endif + +#ifndef __ARCH_SI_UID_T +#define __ARCH_SI_UID_T uid_t #endif #ifndef HAVE_ARCH_SIGINFO_T @@ -26,7 +38,7 @@ typedef struct siginfo { /* kill() */ struct { pid_t _pid; /* sender's pid */ - uid_t _uid; /* sender's uid */ + __ARCH_SI_UID_T _uid; /* sender's uid */ } _kill; /* POSIX.1b timers */ @@ -38,14 +50,14 @@ typedef struct siginfo { /* POSIX.1b signals */ struct { pid_t _pid; /* sender's pid */ - uid_t _uid; /* sender's uid */ + __ARCH_SI_UID_T _uid; /* sender's uid */ sigval_t _sigval; } _rt; /* SIGCHLD */ struct { pid_t _pid; /* which child */ - uid_t _uid; /* sender's uid */ + __ARCH_SI_UID_T _uid; /* sender's uid */ int _status; /* exit code */ clock_t _utime; clock_t _stime; @@ -54,6 +66,9 @@ typedef struct siginfo { /* SIGILL, SIGFPE, SIGSEGV, SIGBUS */ struct { void *_addr; /* faulting insn/memory ref. */ +#ifdef __ARCH_SI_TRAPNO + int _trapno; /* TRAP # which caused the signal */ +#endif } _sigfault; /* SIGPOLL */ @@ -80,6 +95,9 @@ typedef struct siginfo { #define si_int _sifields._rt._sigval.sival_int #define si_ptr _sifields._rt._sigval.sival_ptr #define si_addr _sifields._sigfault._addr +#ifdef __ARCH_SI_TRAPNO +#define si_trapno _sifields._sigfault._trapno +#endif #define si_band _sifields._sigpoll._band #define si_fd _sifields._sigpoll._fd @@ -244,7 +262,7 @@ static inline void copy_siginfo(struct siginfo *to, struct siginfo *from) memcpy(to, from, sizeof(*to)); else /* _sigchld is currently the largest know union member */ - memcpy(to, from, 3*sizeof(int) + sizeof(from->_sifields._sigchld)); + memcpy(to, from, __ARCH_SI_PREAMBLE_SIZE + sizeof(from->_sifields._sigchld)); } #endif diff --git a/include/asm-sparc/siginfo.h b/include/asm-sparc/siginfo.h index b5127b06416f..2c3ea8b22448 100644 --- a/include/asm-sparc/siginfo.h +++ b/include/asm-sparc/siginfo.h @@ -5,64 +5,11 @@ #ifndef _SPARC_SIGINFO_H #define _SPARC_SIGINFO_H -#define HAVE_ARCH_SIGINFO_T -#define HAVE_ARCH_COPY_SIGINFO -#define HAVE_ARCH_COPY_SIGINFO_TO_USER +#define __ARCH_SI_UID_T unsigned int +#define __ARCH_SI_TRAPNO #include <asm-generic/siginfo.h> -typedef struct siginfo { - int si_signo; - int si_errno; - int si_code; - - union { - int _pad[SI_PAD_SIZE]; - - /* kill() */ - struct { - pid_t _pid; /* sender's pid */ - unsigned int _uid; /* sender's uid */ - } _kill; - - /* POSIX.1b timers */ - struct { - unsigned int _timer1; - unsigned int _timer2; - } _timer; - - /* POSIX.1b signals */ - struct { - pid_t _pid; /* sender's pid */ - unsigned int _uid; /* sender's uid */ - sigval_t _sigval; - } _rt; - - /* SIGCHLD */ - struct { - pid_t _pid; /* which child */ - unsigned int _uid; /* sender's uid */ - int _status; /* exit code */ - clock_t _utime; - clock_t _stime; - } _sigchld; - - /* SIGILL, SIGFPE, SIGSEGV, SIGBUS, SIGEMT */ - struct { - void *_addr; /* faulting insn/memory ref. */ - int _trapno; /* TRAP # which caused the signal */ - } _sigfault; - - /* SIGPOLL */ - struct { - int _band; /* POLL_IN, POLL_OUT, POLL_MSG */ - int _fd; - } _sigpoll; - } _sifields; -} siginfo_t; - -#define si_trapno _sifields._sigfault._trapno - #define SI_NOINFO 32767 /* no information in siginfo_t */ /* @@ -71,19 +18,4 @@ typedef struct siginfo { #define EMT_TAGOVF (__SI_FAULT|1) /* tag overflow */ #define NSIGEMT 1 -#ifdef __KERNEL__ - -#include <linux/string.h> - -extern inline void copy_siginfo(siginfo_t *to, siginfo_t *from) -{ - if (from->si_code < 0) - *to = *from; - else - /* _sigchld is currently the largest know union member */ - memcpy(to, from, 3*sizeof(int) + sizeof(from->_sifields._sigchld)); -} - -#endif /* __KERNEL__ */ - #endif /* !(_SPARC_SIGINFO_H) */ diff --git a/include/asm-sparc/unistd.h b/include/asm-sparc/unistd.h index b4a785dbd9cf..721a3ee7a797 100644 --- a/include/asm-sparc/unistd.h +++ b/include/asm-sparc/unistd.h @@ -223,7 +223,7 @@ #define __NR_readahead 205 /* Linux Specific */ #define __NR_socketcall 206 /* Linux Specific */ #define __NR_syslog 207 /* Linux Specific */ -/* #define __NR_olduname 208 Linux Specific */ +#define __NR_lookup_dcookie 208 /* Linux Specific */ /* #define __NR_iopl 209 Linux Specific - i386 specific, unused */ /* #define __NR_idle 210 Linux Specific - was sys_idle, now unused */ /* #define __NR_vm86 211 Linux Specific - i386 specific, unused */ diff --git a/include/asm-sparc64/siginfo.h b/include/asm-sparc64/siginfo.h index f8d1959ea8dc..f4bb94656634 100644 --- a/include/asm-sparc64/siginfo.h +++ b/include/asm-sparc64/siginfo.h @@ -1,15 +1,13 @@ #ifndef _SPARC64_SIGINFO_H #define _SPARC64_SIGINFO_H -#define SI_PAD_SIZE ((SI_MAX_SIZE/sizeof(int)) - 4) #define SI_PAD_SIZE32 ((SI_MAX_SIZE/sizeof(int)) - 3) #define SIGEV_PAD_SIZE ((SIGEV_MAX_SIZE/sizeof(int)) - 4) #define SIGEV_PAD_SIZE32 ((SIGEV_MAX_SIZE/sizeof(int)) - 3) -#define HAVE_ARCH_SIGINFO_T -#define HAVE_ARCH_COPY_SIGINFO -#define HAVE_ARCH_COPY_SIGINFO_TO_USER +#define __ARCH_SI_PREAMBLE_SIZE (4 * sizeof(int)) +#define __ARCH_SI_TRAPNO #include <asm-generic/siginfo.h> @@ -20,60 +18,6 @@ typedef union sigval32 { u32 sival_ptr; } sigval_t32; -#endif /* __KERNEL__ */ - -typedef struct siginfo { - int si_signo; - int si_errno; - int si_code; - - union { - int _pad[SI_PAD_SIZE]; - - /* kill() */ - struct { - pid_t _pid; /* sender's pid */ - uid_t _uid; /* sender's uid */ - } _kill; - - /* POSIX.1b timers */ - struct { - unsigned int _timer1; - unsigned int _timer2; - } _timer; - - /* POSIX.1b signals */ - struct { - pid_t _pid; /* sender's pid */ - uid_t _uid; /* sender's uid */ - sigval_t _sigval; - } _rt; - - /* SIGCHLD */ - struct { - pid_t _pid; /* which child */ - uid_t _uid; /* sender's uid */ - int _status; /* exit code */ - clock_t _utime; - clock_t _stime; - } _sigchld; - - /* SIGILL, SIGFPE, SIGSEGV, SIGBUS, SIGEMT */ - struct { - void *_addr; /* faulting insn/memory ref. */ - int _trapno; /* TRAP # which caused the signal */ - } _sigfault; - - /* SIGPOLL */ - struct { - long _band; /* POLL_IN, POLL_OUT, POLL_MSG */ - int _fd; - } _sigpoll; - } _sifields; -} siginfo_t; - -#ifdef __KERNEL__ - typedef struct siginfo32 { int si_signo; int si_errno; @@ -126,8 +70,6 @@ typedef struct siginfo32 { #endif /* __KERNEL__ */ -#define si_trapno _sifields._sigfault._trapno - #define SI_NOINFO 32767 /* no information in siginfo_t */ /* @@ -152,17 +94,6 @@ typedef struct sigevent32 { } _sigev_un; } sigevent_t32; -#include <linux/string.h> - -static inline void copy_siginfo(siginfo_t *to, siginfo_t *from) -{ - if (from->si_code < 0) - *to = *from; - else - /* _sigchld is currently the largest know union member */ - memcpy(to, from, 4*sizeof(int) + sizeof(from->_sifields._sigchld)); -} - extern int copy_siginfo_to_user32(siginfo_t32 *to, siginfo_t *from); #endif /* __KERNEL__ */ diff --git a/include/asm-sparc64/unistd.h b/include/asm-sparc64/unistd.h index 588f2a577fa7..dcd60cdb9188 100644 --- a/include/asm-sparc64/unistd.h +++ b/include/asm-sparc64/unistd.h @@ -223,7 +223,7 @@ #define __NR_readahead 205 /* Linux Specific */ #define __NR_socketcall 206 /* Linux Specific */ #define __NR_syslog 207 /* Linux Specific */ -/* #define __NR_olduname 208 Linux Specific */ +#define __NR_lookup_dcookie 208 /* Linux Specific */ /* #define __NR_iopl 209 Linux Specific - i386 specific, unused */ /* #define __NR_idle 210 Linux Specific - was sys_idle, now unused */ /* #define __NR_vm86 211 Linux Specific - i386 specific, unused */ |
