Browse Source

signal.h: move prototypes for __syscall_[rt_]sigaction to common place

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>
Peter S. Mazinger 13 years ago
parent
commit
27fbcf79bc

+ 18 - 0
include/signal.h

@@ -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

+ 0 - 8
libc/sysdeps/linux/alpha/bits/kernel_sigaction.h

@@ -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

+ 2 - 5
libc/sysdeps/linux/common/__syscall_rt_sigaction.c

@@ -12,11 +12,8 @@
 #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

+ 1 - 2
libc/sysdeps/linux/common/__syscall_sigaction.c

@@ -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
 

+ 0 - 12
libc/sysdeps/linux/common/bits/kernel_sigaction.h

@@ -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 */

+ 0 - 8
libc/sysdeps/linux/hppa/bits/kernel_sigaction.h

@@ -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

+ 0 - 8
libc/sysdeps/linux/mips/bits/kernel_sigaction.h

@@ -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