OSDN Git Service

sigaction overhaul as described in docs/sigaction.txt
[uclinux-h8/uClibc.git] / libc / sysdeps / linux / common / bits / kernel_sigaction.h
index a39aa32..f74e0a2 100644 (file)
@@ -4,72 +4,33 @@
 /* This file provides whatever this particular arch's kernel thinks
  * the sigaction struct should look like... */
 
-#undef NO_OLD_SIGACTION
 
-#if defined(__mips__)
-/* We have libc/sysdeps/linux/mips/bits/kernel_sigaction.h,
- * so this should never be used. Lets see whether it is true. */
-struct BUG_is_here { char BUG_is_here[-1]; };
+#if defined(__ia64__)
 
 #undef HAVE_SA_RESTORER
-/* This is the sigaction structure from the Linux 2.1.24 kernel.  */
-#include <sgidefs.h>
-struct old_kernel_sigaction {
-    __sighandler_t  k_sa_handler;
-    unsigned int    sa_flags;
-    unsigned long   sa_mask;
-};
-#define _KERNEL_NSIG           128
-#define _KERNEL_NSIG_BPW       32
-#define _KERNEL_NSIG_WORDS     (_KERNEL_NSIG / _KERNEL_NSIG_BPW)
-typedef struct {
-    unsigned long sig[_KERNEL_NSIG_WORDS];
-} kernel_sigset_t;
-/* This is the sigaction structure from the Linux 2.1.68 kernel.  */
-struct kernel_sigaction {
-    unsigned int    sa_flags;
-    __sighandler_t  k_sa_handler;
-    kernel_sigset_t sa_mask;
-    void            (*sa_restorer)(void);
-    int             s_resv[1]; /* reserved */
-};
-
-#elif defined(__ia64__)
-
-#define NO_OLD_SIGACTION
-#undef HAVE_SA_RESTORER
-struct kernel_sigaction {
-       __sighandler_t k_sa_handler;
-       unsigned long sa_flags;
-       sigset_t sa_mask;
-};
 
 #else
 
 #define HAVE_SA_RESTORER
 /* 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 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 long sa_flags;
-    void (*sa_restorer) (void);
-    sigset_t sa_mask;
+       __sighandler_t k_sa_handler;
+       unsigned long sa_mask;
+       unsigned long sa_flags;
+       void (*sa_restorer)(void);
 };
+/* In uclibc, userspace struct sigaction is identical to
+ * "new" struct kernel_sigaction (one from the Linux 2.1.68 kernel).
+ * See sigaction.h
+ */
 
-#endif
-
-#ifndef NO_OLD_SIGACTION
-extern int __syscall_sigaction (int, const struct old_kernel_sigaction *,
+extern int __syscall_sigaction(int, const struct old_kernel_sigaction *,
        struct old_kernel_sigaction *) attribute_hidden;
+
 #endif
 
-extern int __syscall_rt_sigaction (int, const struct kernel_sigaction *,
-       struct kernel_sigaction *, size_t) attribute_hidden;
+
+extern int __syscall_rt_sigaction(int, const struct sigaction *,
+       struct sigaction *, size_t) attribute_hidden;
 
 #endif /* _BITS_SIGACTION_STRUCT_H */