[git commit] not-cancel.h: update common version and make sure we use this one

Bernhard Reutner-Fischer rep.dot.nop at gmail.com
Fri Jun 15 12:00:42 UTC 2012


commit: http://git.uclibc.org/uClibc/commit/?id=804ab2f72f974c15826df439fa0876756989b97c
branch: http://git.uclibc.org/uClibc/commit/?id=refs/heads/master

Update file (same as in NPTL).
Disable unused parts, the remaining inlines will be fixed later.
Copy it to include to be sure that we use this one independently of
chosen threads.

Provide write,close and waitpid_not_cancel for LT new.
Use wait4 syscall instead of waitpid syscall (kernel says so).
Provide open_not_cancel and close_not_cancel for librt's spawn.

Signed-off-by: Peter S. Mazinger <ps.m at gmx.net>
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop at gmail.com>
---
 Makefile.in                            |    6 ++-
 libc/sysdeps/linux/common/not-cancel.h |   61 ++++++++++++++++++++++++++++++--
 2 files changed, 62 insertions(+), 5 deletions(-)

diff --git a/Makefile.in b/Makefile.in
index 0be507a..16d77de 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -106,7 +106,8 @@ ALL_HEADERS_COMMON       := $(top_builddir)include/fpu_control.h \
 				$(top_builddir)include/jmpbuf-offsets.h \
 				$(top_builddir)include/jmpbuf-unwind.h \
 				$(top_builddir)include/dl-osinfo.h \
-				$(top_builddir)include/hp-timing.h
+				$(top_builddir)include/hp-timing.h \
+				$(top_builddir)include/not-cancel.h
 ALL_HEADERS_BITS_COMMON  := $(addprefix $(top_builddir)include/bits/,$(HEADERS_BITS_COMMON))
 ALL_HEADERS_BITS_ARCH    := $(addprefix $(top_builddir)include/bits/,$(HEADERS_BITS_ARCH))
 ifneq ($(TARGET_SUBARCH),)
@@ -132,7 +133,7 @@ $(top_builddir)include/fpu_control.h $(top_builddir)include/jmpbuf-offsets.h $(t
 		$(LN) -fs $(call rel_srcdir)libc/sysdeps/linux/$(TARGET_ARCH)/$(@F) $@ || \
 		$(LN) -fs $(call rel_srcdir)libc/sysdeps/linux/common/$(@F) $@
 
-$(top_builddir)include/dl-osinfo.h $(top_builddir)include/hp-timing.h:
+$(top_builddir)include/dl-osinfo.h $(top_builddir)include/hp-timing.h $(top_builddir)include/not-cancel.h:
 	$(do_ln) $(call rel_srcdir)libc/sysdeps/linux/common/$(@F) $@
 
 $(ALL_HEADERS_BITS_COMMON):
@@ -222,6 +223,7 @@ HEADERS_RM- := \
 	jmpbuf-offsets.h \
 	jmpbuf-unwind.h \
 	hp-timing.h \
+	not-cancel.h \
 	_lfs_64.h \
 	bits/uClibc_arch_features.h \
 	bits/kernel_sigaction.h \
diff --git a/libc/sysdeps/linux/common/not-cancel.h b/libc/sysdeps/linux/common/not-cancel.h
index b3484de..6a4dee4 100644
--- a/libc/sysdeps/linux/common/not-cancel.h
+++ b/libc/sysdeps/linux/common/not-cancel.h
@@ -1,5 +1,5 @@
 /* Uncancelable versions of cancelable interfaces.  Linux version.
-   Copyright (C) 2003 Free Software Foundation, Inc.
+   Copyright (C) 2003, 2006 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper at redhat.com>, 2003.
 
@@ -18,6 +18,7 @@
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
+#include <sys/types.h>
 #include <sysdep.h>
 
 #ifdef NOT_IN_libc
@@ -28,6 +29,30 @@
 #define open_not_cancel_2(name, flags) \
    INLINE_SYSCALL (open, 2, (const char *) (name), (flags))
 
+#if 0
+/* Uncancelable openat.  */
+#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
+extern int __openat_nocancel (int fd, const char *fname, int oflag,
+			      mode_t mode) attribute_hidden;
+extern int __openat64_nocancel (int fd, const char *fname, int oflag,
+				mode_t mode) attribute_hidden;
+#else
+# define __openat_nocancel(fd, fname, oflag, mode) \
+  openat (fd, fname, oflag, mode)
+# define __openat64_nocancel(fd, fname, oflag, mode) \
+  openat64 (fd, fname, oflag, mode)
+#endif
+
+#define openat_not_cancel(fd, fname, oflag, mode) \
+  __openat_nocancel (fd, fname, oflag, mode)
+#define openat_not_cancel_3(fd, fname, oflag) \
+  __openat_nocancel (fd, fname, oflag, 0)
+#define openat64_not_cancel(fd, fname, oflag, mode) \
+  __openat64_nocancel (fd, fname, oflag, mode)
+#define openat64_not_cancel_3(fd, fname, oflag) \
+  __openat64_nocancel (fd, fname, oflag, 0)
+#endif
+
 /* Uncancelable close.  */
 #define close_not_cancel(fd) \
   INLINE_SYSCALL (close, 1, fd)
@@ -39,10 +64,13 @@
 #define read_not_cancel(fd, buf, n) \
   INLINE_SYSCALL (read, 3, (fd), (buf), (n))
 
+#ifdef __LINUXTHREADS_NEW__
 /* Uncancelable write.  */
 #define write_not_cancel(fd, buf, n) \
   INLINE_SYSCALL (write, 3, (fd), (buf), (n))
+#endif
 
+#if 0
 /* Uncancelable writev.  */
 #define writev_not_cancel_no_status(fd, iov, n) \
   (void) ({ INTERNAL_SYSCALL_DECL (err);				      \
@@ -51,17 +79,44 @@
 /* Uncancelable fcntl.  */
 #define fcntl_not_cancel(fd, cmd, val) \
   __fcntl_nocancel (fd, cmd, val)
+#endif
 
+#ifdef __LINUXTHREADS_NEW__
 /* Uncancelable waitpid.  */
-#ifdef __NR_waitpid
+#if 0 /*def __NR_waitpid*/
 # define waitpid_not_cancel(pid, stat_loc, options) \
   INLINE_SYSCALL (waitpid, 3, pid, stat_loc, options)
 #else
 # define waitpid_not_cancel(pid, stat_loc, options) \
   INLINE_SYSCALL (wait4, 4, pid, stat_loc, options, NULL)
 #endif
+#endif
 
-#else
+/* Uncancelable pause.  */
+#ifdef __NR_pause
+# define pause_not_cancel() \
+  INLINE_SYSCALL (pause, 0)
+/*#else
+# define pause_not_cancel() \
+  __pause_nocancel ()*/
+#endif
+
+/* Uncancelable nanosleep.  */
+#ifdef __NR_nanosleep
+# define nanosleep_not_cancel(requested_time, remaining) \
+  INLINE_SYSCALL (nanosleep, 2, requested_time, remaining)
+/*#else
+# define nanosleep_not_cancel(requested_time, remaining) \
+  __nanosleep_nocancel (requested_time, remaining)*/
+#endif
+
+#if 0
+/* Uncancelable sigsuspend.  */
+#define sigsuspend_not_cancel(set) \
+  __sigsuspend_nocancel (set)
+#endif
+
+#elif !defined NOT_IN_libc
 
 #include <cancel.h>
 #include <fcntl.h>


More information about the uClibc-cvs mailing list