summaryrefslogtreecommitdiff
path: root/libc/signal/sigaction.c
diff options
context:
space:
mode:
Diffstat (limited to 'libc/signal/sigaction.c')
-rw-r--r--libc/signal/sigaction.c33
1 files changed, 23 insertions, 10 deletions
diff --git a/libc/signal/sigaction.c b/libc/signal/sigaction.c
index 849abc745..cf58edf39 100644
--- a/libc/signal/sigaction.c
+++ b/libc/signal/sigaction.c
@@ -28,7 +28,22 @@
#define HAVE_SA_RESTORER
-#if defined(__hppa__)
+#if defined(__alpha__)
+#undef HAVE_SA_RESTORER
+/* This is the sigaction struction from the Linux 2.1.20 kernel. */
+struct old_kernel_sigaction {
+ __sighandler_t k_sa_handler;
+ unsigned long sa_mask;
+ unsigned int sa_flags;
+};
+/* This is the sigaction structure from the Linux 2.1.68 kernel. */
+struct kernel_sigaction {
+ __sighandler_t k_sa_handler;
+ unsigned int sa_flags;
+ sigset_t sa_mask;
+};
+#elif defined(__hppa__)
+/* We do not support SA_RESTORER on hppa. */
#undef HAVE_SA_RESTORER
/* This is the sigaction struction from the Linux 2.1.20 kernel. */
/* Blah. This is bogus. We don't ever use it. */
@@ -37,7 +52,6 @@ struct old_kernel_sigaction {
unsigned long sa_mask;
unsigned long sa_flags;
};
-
/* This is the sigaction structure from the Linux 2.1.68 kernel. */
struct kernel_sigaction {
__sighandler_t k_sa_handler;
@@ -79,20 +93,19 @@ struct kernel_sigaction {
int s_resv[1]; /* reserved */
};
#else
-
-#undef HAVE_SA_RESTORER
-/* This is the sigaction struction from the Linux 2.1.20 kernel. */
+/* This is the sigaction structure from the Linux 2.1.20 kernel. */
struct old_kernel_sigaction {
__sighandler_t k_sa_handler;
unsigned long sa_mask;
- unsigned int sa_flags;
-};
-
+ unsigned long sa_flags;
+ void (*sa_restorer) (void);
+};
+
/* This is the sigaction structure from the Linux 2.1.68 kernel. */
-
struct kernel_sigaction {
__sighandler_t k_sa_handler;
- unsigned int sa_flags;
+ unsigned long sa_flags;
+ void (*sa_restorer) (void);
sigset_t sa_mask;
};
#endif