flush_signal_handlers() needs to know whether sigaction::sa_restorer
is defined, not whether SA_RESTORER is defined. Define the
__ARCH_HAS_SA_RESTORER macro to indicate this.
Vaguely based on upstream commit
574c4866e33d 'consolidate kernel-side
struct sigaction declarations'.
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Cc: Al Viro <viro@zeniv.linux.org.uk>
13 files changed:
__sigrestore_t sa_restorer;
sigset_t sa_mask; /* mask last for extensibility */
};
__sigrestore_t sa_restorer;
sigset_t sa_mask; /* mask last for extensibility */
};
+#define __ARCH_HAS_SA_RESTORER
struct k_sigaction {
struct sigaction sa;
struct k_sigaction {
struct sigaction sa;
__sigrestore_t sa_restorer;
sigset_t sa_mask; /* mask last for extensibility */
};
__sigrestore_t sa_restorer;
sigset_t sa_mask; /* mask last for extensibility */
};
+#define __ARCH_HAS_SA_RESTORER
struct k_sigaction {
struct sigaction sa;
struct k_sigaction {
struct sigaction sa;
void (*sa_restorer)(void);
sigset_t sa_mask; /* mask last for extensibility */
};
void (*sa_restorer)(void);
sigset_t sa_mask; /* mask last for extensibility */
};
+#define __ARCH_HAS_SA_RESTORER
struct k_sigaction {
struct sigaction sa;
struct k_sigaction {
struct sigaction sa;
void (*sa_restorer)(void);
sigset_t sa_mask; /* mask last for extensibility */
};
void (*sa_restorer)(void);
sigset_t sa_mask; /* mask last for extensibility */
};
+#define __ARCH_HAS_SA_RESTORER
struct k_sigaction {
struct sigaction sa;
struct k_sigaction {
struct sigaction sa;
__sigrestore_t sa_restorer;
sigset_t sa_mask; /* mask last for extensibility */
};
__sigrestore_t sa_restorer;
sigset_t sa_mask; /* mask last for extensibility */
};
+#define __ARCH_HAS_SA_RESTORER
struct k_sigaction {
struct sigaction sa;
struct k_sigaction {
struct sigaction sa;
__sigrestore_t sa_restorer;
sigset_t sa_mask; /* mask last for extensibility */
};
__sigrestore_t sa_restorer;
sigset_t sa_mask; /* mask last for extensibility */
};
+#define __ARCH_HAS_SA_RESTORER
struct k_sigaction {
struct sigaction sa;
struct k_sigaction {
struct sigaction sa;
__sigrestore_t sa_restorer;
sigset_t sa_mask; /* mask last for extensibility */
};
__sigrestore_t sa_restorer;
sigset_t sa_mask; /* mask last for extensibility */
};
+#define __ARCH_HAS_SA_RESTORER
struct k_sigaction {
struct sigaction sa;
struct k_sigaction {
struct sigaction sa;
__sigrestore_t sa_restorer;
sigset_t sa_mask; /* mask last for extensibility */
};
__sigrestore_t sa_restorer;
sigset_t sa_mask; /* mask last for extensibility */
};
+#define __ARCH_HAS_SA_RESTORER
struct k_sigaction {
struct sigaction sa;
struct k_sigaction {
struct sigaction sa;
void (*sa_restorer)(void);
sigset_t sa_mask; /* mask last for extensibility */
};
void (*sa_restorer)(void);
sigset_t sa_mask; /* mask last for extensibility */
};
+#define __ARCH_HAS_SA_RESTORER
struct k_sigaction {
struct sigaction sa;
struct k_sigaction {
struct sigaction sa;
unsigned long sa_flags;
void (*sa_restorer)(void); /* not used by Linux/SPARC yet */
};
unsigned long sa_flags;
void (*sa_restorer)(void); /* not used by Linux/SPARC yet */
};
+#define __ARCH_HAS_SA_RESTORER
typedef struct sigaltstack {
void __user *ss_sp;
typedef struct sigaltstack {
void __user *ss_sp;
extern void do_notify_resume(struct pt_regs *, void *, __u32);
# endif /* __KERNEL__ */
extern void do_notify_resume(struct pt_regs *, void *, __u32);
# endif /* __KERNEL__ */
+#define __ARCH_HAS_SA_RESTORER
+
#ifdef __i386__
# ifdef __KERNEL__
struct old_sigaction {
#ifdef __i386__
# ifdef __KERNEL__
struct old_sigaction {
void (*sa_restorer)(void);
sigset_t sa_mask; /* mask last for extensibility */
};
void (*sa_restorer)(void);
sigset_t sa_mask; /* mask last for extensibility */
};
+#define __ARCH_HAS_SA_RESTORER
struct k_sigaction {
struct sigaction sa;
struct k_sigaction {
struct sigaction sa;
#include <asm-generic/signal-defs.h>
#include <asm-generic/signal-defs.h>
+#ifdef SA_RESTORER
+#define __ARCH_HAS_SA_RESTORER
+#endif
+
struct sigaction {
__sighandler_t sa_handler;
unsigned long sa_flags;
struct sigaction {
__sighandler_t sa_handler;
unsigned long sa_flags;