OSDN Git Service

signal.h: move prototypes for __syscall_[rt_]sigaction to common place
authorPeter S. Mazinger <ps.m@gmx.net>
Sat, 12 Mar 2011 23:29:45 +0000 (00:29 +0100)
committerBernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Fri, 15 Jun 2012 12:00:22 +0000 (14:00 +0200)
solve inconsistency between archs
NPTL should not use __syscall_rt_sigaction at all, for now it needs to be visible

Signed-off-by: Peter S. Mazinger <ps.m@gmx.net>
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
include/signal.h
libc/sysdeps/linux/alpha/bits/kernel_sigaction.h
libc/sysdeps/linux/common/__syscall_rt_sigaction.c
libc/sysdeps/linux/common/__syscall_sigaction.c
libc/sysdeps/linux/common/bits/kernel_sigaction.h
libc/sysdeps/linux/hppa/bits/kernel_sigaction.h
libc/sysdeps/linux/mips/bits/kernel_sigaction.h

index a0b3edc..8674b1a 100644 (file)
@@ -291,6 +291,24 @@ libc_hidden_proto(sigsuspend)
 extern int sigaction (int __sig, __const struct sigaction *__restrict __act,
                      struct sigaction *__restrict __oact) __THROW;
 #ifdef _LIBC
+# if 0 /* this is in headers */
+/* In uclibc, userspace struct sigaction is identical to
+ * "new" struct kernel_sigaction (one from the Linux 2.1.68 kernel).
+ * See sigaction.h
+ */
+struct old_kernel_sigaction;
+extern int __syscall_sigaction(int, __const struct old_kernel_sigaction *,
+       struct old_kernel_sigaction *) attribute_hidden;
+# else /* this is how the function is built */
+extern __typeof(sigaction) __syscall_sigaction attribute_hidden;
+# endif
+/* candidate for attribute_hidden, if NPTL would behave */
+extern int __syscall_rt_sigaction(int, __const struct sigaction *,
+       struct sigaction *, size_t)
+# ifndef __UCLIBC_HAS_THREADS_NATIVE__
+               attribute_hidden
+# endif
+       ;
 extern __typeof(sigaction) __libc_sigaction;
 libc_hidden_proto(sigaction)
 #endif
index cd6b213..7746e30 100644 (file)
@@ -9,12 +9,4 @@ struct old_kernel_sigaction {
        unsigned int sa_flags;
 };
 
-/* In uclibc, userspace struct sigaction is identical to
- * "new" struct kernel_sigaction (one from the Linux 2.1.68 kernel).
- * See sigaction.h
- */
-
-extern int __syscall_rt_sigaction (int, const struct sigaction *,
-       struct sigaction *, size_t) attribute_hidden;
-
 #endif
index 006b38a..723bf2e 100644 (file)
 #ifdef __NR_rt_sigaction
 #include <signal.h>
 
-int __syscall_rt_sigaction (int __signum, const struct sigaction *__act,
-                                                       struct sigaction *__oldact, size_t __size);
-
 #define __NR___syscall_rt_sigaction __NR_rt_sigaction
 _syscall4(int, __syscall_rt_sigaction, int, signum,
-                 const struct sigaction *, act, struct sigaction *, oldact,
-                 size_t, size)
+         const struct sigaction *, act, struct sigaction *, oldact,
+         size_t, size)
 #endif
index ae0f01e..98e6637 100644 (file)
@@ -12,8 +12,7 @@
 #ifndef __NR_rt_sigaction
 #define __NR___syscall_sigaction __NR_sigaction
 #include <signal.h>
-int __syscall_sigaction (int __signum, const struct sigaction *__act, struct sigaction *__oldact) attribute_hidden;
 _syscall3(int, __syscall_sigaction, int, signum, const struct sigaction *,
-                 act, struct sigaction *, oldact)
+         act, struct sigaction *, oldact)
 #endif
 
index 0a35ac8..5c87260 100644 (file)
@@ -19,18 +19,6 @@ struct old_kernel_sigaction {
        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
- */
-
-extern int __syscall_sigaction(int, const struct old_kernel_sigaction *,
-       struct old_kernel_sigaction *);
-
 #endif
 
-
-extern int __syscall_rt_sigaction(int, const struct sigaction *,
-       struct sigaction *, size_t);
-
 #endif /* _BITS_SIGACTION_STRUCT_H */
index 1c093a5..5834bf3 100644 (file)
@@ -12,12 +12,4 @@ struct old_kernel_sigaction {
        unsigned long sa_flags;
 };
 
-/* In uclibc, userspace struct sigaction is identical to
- * "new" struct kernel_sigaction (one from the Linux 2.1.68 kernel).
- * See sigaction.h
- */
-
-extern int __syscall_rt_sigaction (int, const struct sigaction *,
-       struct sigaction *, size_t) attribute_hidden;
-
 #endif
index 2048095..65eff7c 100644 (file)
@@ -24,12 +24,4 @@ struct old_kernel_sigaction {
 #endif
 };
 
-/* In uclibc, userspace struct sigaction is identical to
- * "new" struct kernel_sigaction (one from the Linux 2.1.68 kernel).
- * See sigaction.h
- */
-
-extern int __syscall_rt_sigaction (int, const struct sigaction *,
-       struct sigaction *, size_t) attribute_hidden;
-
 #endif