#ifndef _ASM_S390X_S390_H
#define _ASM_S390X_S390_H
-#include <linux/config.h>
#include <linux/compat.h>
#include <linux/socket.h>
#include <linux/syscalls.h>
__u32 sa_restorer; /* Another 32 bit pointer */
};
-typedef union sigval32 {
- int sival_int;
- __u32 sival_ptr;
-} sigval_t32;
-
-typedef struct siginfo32 {
+typedef struct compat_siginfo {
int si_signo;
int si_errno;
int si_code;
/* POSIX.1b timers */
struct {
- unsigned int _timer1;
- unsigned int _timer2;
-
+ compat_timer_t _tid; /* timer id */
+ int _overrun; /* overrun count */
+ compat_sigval_t _sigval; /* same as below */
+ int _sys_private; /* not to be passed to user */
} _timer;
/* POSIX.1b signals */
struct {
pid_t _pid; /* sender's pid */
uid_t _uid; /* sender's uid */
- sigval_t32 _sigval;
+ compat_sigval_t _sigval;
} _rt;
/* SIGCHLD */
int _fd;
} _sigpoll;
} _sifields;
-} siginfo_t32;
+} compat_siginfo_t;
/*
* How these fields are to be accessed.
#define si_addr _sifields._sigfault._addr
#define si_band _sifields._sigpoll._band
#define si_fd _sifields._sigpoll._fd
+#define si_tid _sifields._timer._tid
+#define si_overrun _sifields._timer._overrun
/* asm/sigcontext.h */
typedef union
compat_sigset_t uc_sigmask; /* mask last for extensibility */
};
-#define SIGEV_PAD_SIZE32 ((SIGEV_MAX_SIZE/sizeof(int)) - 3)
-struct sigevent32 {
- union {
- int sival_int;
- u32 sival_ptr;
- } sigev_value;
- int sigev_signo;
- int sigev_notify;
- union {
- int _pad[SIGEV_PAD_SIZE32];
- int _tid;
- struct {
- u32 *_function;
- u32 *_attribute;
- } _sigev_thread;
- } _sigev_un;
-};
-
-extern int copy_siginfo_to_user32(siginfo_t32 __user *to, siginfo_t *from);
-extern int copy_siginfo_from_user32(siginfo_t *to, siginfo_t32 __user *from);
-
#endif /* _ASM_S390X_S390_H */