This is the mail archive of the libc-ports@sources.redhat.com mailing list for the libc-ports project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Remove __ASSUME_CLONE_THREAD_FLAGS


__ASSUME_CLONE_THREAD_FLAGS is defined for all supported kernel
versions for all libc architectures, ia64 and tile, with a comment:

/* The late 2.5 kernels saw a lot of new CLONE_* flags.  Summarize
   their availability with one define.  The changes were made first
   for i386 and the have to be done separately for the other archs.
   For i386 we pick 2.5.50 as the first version with support.
   For s390*, SPARC, PPC, x86-64, and SH we pick 2.5.64 as the first
   version with support.  */

This comment isn't very helpful for knowing what to check for to tell
whether the feature is supported for an architecture.  However, the
macro is only used in sysdeps/unix/sysv/linux/system.c and some
architecture-specific versions of system.c (all of which are (a) for
architectures that now always define the macro and (b) not #included
for any other architecture, so they are irrelevant for determining
whether the macro can be removed).  And the only CLONE_* flag used
conditional on the macro in sysdeps/unix/sysv/linux/system.c is
CLONE_PARENT_SETTID.  As far as I can tell, in 2.6.16 this is handled
in an architecture-independent way; all architectures need to do is
pass around the relevant parent_tid pointer, which they all seem to do
in 2.6.16 (or 2.6.25 for am33).  So I believe this macro can in fact
be removed, which this patch does.  Tested x86_64.

2012-08-14  Joseph Myers  <joseph@codesourcery.com>

	* sysdeps/unix/sysv/linux/kernel-features.h
	(__ASSUME_CLONE_THREAD_FLAGS): Remove.
	* sysdeps/unix/sysv/linux/s390/system.c (FORK): Define
	unconditionally.
	* sysdeps/unix/sysv/linux/sparc/system.c (FORK): Define
	unconditionally.
	* sysdeps/unix/sysv/linux/system.c [!FORK] (FORK): Do not
	condition on __ASSUME_CLONE_THREAD_FLAGS.

ports/ChangeLog.ia64:
2012-08-14  Joseph Myers  <joseph@codesourcery.com>

	* sysdeps/unix/sysv/linux/ia64/kernel-features.h
	(__ASSUME_CLONE_THREAD_FLAGS): Remove.
	* sysdeps/unix/sysv/linux/ia64/system.c (FORK): Define
	unconditionally.

ports/ChangeLog.tile:
2012-08-14  Joseph Myers  <joseph@codesourcery.com>

	* sysdeps/unix/sysv/linux/tile/kernel-features.h
	(__ASSUME_CLONE_THREAD_FLAGS): Remove.

diff --git a/ports/sysdeps/unix/sysv/linux/ia64/kernel-features.h b/ports/sysdeps/unix/sysv/linux/ia64/kernel-features.h
index 061a86d..bd3e377 100644
--- a/ports/sysdeps/unix/sysv/linux/ia64/kernel-features.h
+++ b/ports/sysdeps/unix/sysv/linux/ia64/kernel-features.h
@@ -20,10 +20,6 @@
 #ifndef _KERNEL_FEATURES_H
 #define _KERNEL_FEATURES_H 1
 
-/* The late 2.5 kernels saw a lot of new CLONE_* flags.  Summarize
-   their availability with one define.  */
-#define __ASSUME_CLONE_THREAD_FLAGS   1
-
 /* The utimes syscall has been available for some architectures
    forever.  */
 #define __ASSUME_UTIMES	1
diff --git a/ports/sysdeps/unix/sysv/linux/ia64/system.c b/ports/sysdeps/unix/sysv/linux/ia64/system.c
index f02a99e..6970a1f 100644
--- a/ports/sysdeps/unix/sysv/linux/ia64/system.c
+++ b/ports/sysdeps/unix/sysv/linux/ia64/system.c
@@ -25,10 +25,8 @@
    return.  It might still be in the kernel when the cancellation
    request comes.  Therefore we have to use the clone() calls ability
    to have the kernel write the PID into the user-level variable.  */
-#ifdef __ASSUME_CLONE_THREAD_FLAGS
-# define FORK() \
+#define FORK() \
   INLINE_SYSCALL (clone2, 6, CLONE_PARENT_SETTID | SIGCHLD, NULL, 0, \
 		  &pid, NULL, NULL)
-#endif
 
 #include <sysdeps/unix/sysv/linux/system.c>
diff --git a/ports/sysdeps/unix/sysv/linux/tile/kernel-features.h b/ports/sysdeps/unix/sysv/linux/tile/kernel-features.h
index 3c00344..956f14c 100644
--- a/ports/sysdeps/unix/sysv/linux/tile/kernel-features.h
+++ b/ports/sysdeps/unix/sysv/linux/tile/kernel-features.h
@@ -20,7 +20,6 @@
 /* TILE glibc support starts with 2.6.36, guaranteeing many kernel features. */
 #define __ASSUME_MMAP2_SYSCALL		1
 #define __ASSUME_STAT64_SYSCALL		1
-#define __ASSUME_CLONE_THREAD_FLAGS	1
 #define __ASSUME_UTIMES			1
 #define __ASSUME_FADVISE64_64_SYSCALL	1
 #define __ASSUME_O_CLOEXEC		1
diff --git a/sysdeps/unix/sysv/linux/kernel-features.h b/sysdeps/unix/sysv/linux/kernel-features.h
index bf81c4a..0aa01c9 100644
--- a/sysdeps/unix/sysv/linux/kernel-features.h
+++ b/sysdeps/unix/sysv/linux/kernel-features.h
@@ -92,17 +92,6 @@
 # define __ASSUME_MMAP2_SYSCALL		1
 #endif
 
-/* The late 2.5 kernels saw a lot of new CLONE_* flags.  Summarize
-   their availability with one define.  The changes were made first
-   for i386 and the have to be done separately for the other archs.
-   For i386 we pick 2.5.50 as the first version with support.
-   For s390*, SPARC, PPC, x86-64, and SH we pick 2.5.64 as the first
-   version with support.  */
-#if (defined __i386__ || defined __s390__ || defined __sparc__		\
-     || defined __powerpc__ || defined __x86_64__ || defined __sh__)
-# define __ASSUME_CLONE_THREAD_FLAGS	1
-#endif
-
 /* Beginning with 2.5.63 support for realtime and monotonic clocks and
    timers based on them is available.  */
 #define __ASSUME_POSIX_TIMERS		1
diff --git a/sysdeps/unix/sysv/linux/s390/system.c b/sysdeps/unix/sysv/linux/s390/system.c
index f63584c..66f9661 100644
--- a/sysdeps/unix/sysv/linux/s390/system.c
+++ b/sysdeps/unix/sysv/linux/s390/system.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2003 Free Software Foundation, Inc.
+/* Copyright (C) 2003-2012 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -25,9 +25,7 @@
    return.  It might still be in the kernel when the cancellation
    request comes.  Therefore we have to use the clone() calls ability
    to have the kernel write the PID into the user-level variable.  */
-#ifdef __ASSUME_CLONE_THREAD_FLAGS
-# define FORK() \
+#define FORK() \
   INLINE_SYSCALL (clone, 3, 0, CLONE_PARENT_SETTID | SIGCHLD, &pid)
-#endif
 
 #include "../system.c"
diff --git a/sysdeps/unix/sysv/linux/sparc/system.c b/sysdeps/unix/sysv/linux/sparc/system.c
index 3149091..a5e34dc 100644
--- a/sysdeps/unix/sysv/linux/sparc/system.c
+++ b/sysdeps/unix/sysv/linux/sparc/system.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2003 Free Software Foundation, Inc.
+/* Copyright (C) 2003-2012 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -25,9 +25,7 @@
    return.  It might still be in the kernel when the cancellation
    request comes.  Therefore we have to use the clone() calls ability
    to have the kernel write the PID into the user-level variable.  */
-#ifdef __ASSUME_CLONE_THREAD_FLAGS
-# define FORK() \
+#define FORK() \
   INLINE_CLONE_SYSCALL (CLONE_PARENT_SETTID | SIGCHLD, 0, &pid, NULL, NULL)
-#endif
 
 #include "../system.c"
diff --git a/sysdeps/unix/sysv/linux/system.c b/sysdeps/unix/sysv/linux/system.c
index 4604544..29ab63e 100644
--- a/sysdeps/unix/sysv/linux/system.c
+++ b/sysdeps/unix/sysv/linux/system.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc.
+/* Copyright (C) 2002-2012 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -32,7 +32,7 @@
    return.  It might still be in the kernel when the cancellation
    request comes.  Therefore we have to use the clone() calls ability
    to have the kernel write the PID into the user-level variable.  */
-#if defined __ASSUME_CLONE_THREAD_FLAGS && !defined FORK
+#ifndef FORK
 # define FORK() \
   INLINE_SYSCALL (clone, 3, CLONE_PARENT_SETTID | SIGCHLD, 0, &pid)
 #endif

-- 
Joseph S. Myers
joseph@codesourcery.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]