about summary refs log tree commit diff
path: root/sysdeps
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/nptl/Makeconfig32
-rw-r--r--sysdeps/nptl/aio_misc.h2
-rw-r--r--sysdeps/nptl/fork.c2
-rw-r--r--sysdeps/nptl/gai_misc.h2
-rw-r--r--sysdeps/nptl/internaltypes.h161
-rw-r--r--sysdeps/nptl/jmp-unwind.c2
-rw-r--r--sysdeps/nptl/librt-cancellation.c2
-rw-r--r--sysdeps/nptl/setxid.h2
-rw-r--r--sysdeps/unix/sysv/linux/aarch64/Implies1
-rw-r--r--sysdeps/unix/sysv/linux/alpha/Implies1
-rw-r--r--sysdeps/unix/sysv/linux/arm/Implies1
-rw-r--r--sysdeps/unix/sysv/linux/configure27
-rw-r--r--sysdeps/unix/sysv/linux/configure.ac27
-rw-r--r--sysdeps/unix/sysv/linux/hppa/Implies1
-rw-r--r--sysdeps/unix/sysv/linux/i386/Implies1
-rw-r--r--sysdeps/unix/sysv/linux/i386/i686/Implies1
-rw-r--r--sysdeps/unix/sysv/linux/ia64/Implies1
-rw-r--r--sysdeps/unix/sysv/linux/m68k/Implies1
-rw-r--r--sysdeps/unix/sysv/linux/microblaze/Implies1
-rw-r--r--sysdeps/unix/sysv/linux/mips/Implies1
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/Implies1
-rw-r--r--sysdeps/unix/sysv/linux/s390/Implies2
-rw-r--r--sysdeps/unix/sysv/linux/sh/Implies1
-rw-r--r--sysdeps/unix/sysv/linux/sparc/Implies1
-rw-r--r--sysdeps/unix/sysv/linux/tile/Implies1
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/Implies1
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/x32/Implies1
27 files changed, 217 insertions, 60 deletions
diff --git a/sysdeps/nptl/Makeconfig b/sysdeps/nptl/Makeconfig
new file mode 100644
index 0000000000..bfd1db0b31
--- /dev/null
+++ b/sysdeps/nptl/Makeconfig
@@ -0,0 +1,32 @@
+# Copyright (C) 2002-2014 Free Software Foundation, Inc.
+# This file is part of the GNU C Library.
+# Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
+
+# The GNU C Library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+
+# The GNU C Library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+
+# You should have received a copy of the GNU Lesser General Public
+# License along with the GNU C Library; if not, see
+# <http://www.gnu.org/licenses/>.
+
+# Makeconfig fragment for NPTL add-on.
+# This gets included at the end of the main glibc Makeconfig.
+
+have-thread-library = yes
+
+shared-thread-library = $(common-objpfx)nptl/libpthread_nonshared.a \
+			$(common-objpfx)nptl/libpthread.so
+static-thread-library = $(common-objpfx)nptl/libpthread.a
+
+rpath-dirs += nptl
+
+# This makes for ptw-*.? object rules in sysd-rules.
+ptw-CPPFLAGS := -DPTW
+sysd-rules-patterns += ptw-%:%
diff --git a/sysdeps/nptl/aio_misc.h b/sysdeps/nptl/aio_misc.h
index ac3488c57e..c3de84b1ac 100644
--- a/sysdeps/nptl/aio_misc.h
+++ b/sysdeps/nptl/aio_misc.h
@@ -21,7 +21,7 @@
    correct aio_suspend and lio_listio implementations.  */
 
 #include <assert.h>
-#include <pthreadP.h>
+#include <nptl/pthreadP.h>
 #include <lowlevellock.h>
 
 #define DONT_NEED_AIO_MISC_COND	1
diff --git a/sysdeps/nptl/fork.c b/sysdeps/nptl/fork.c
index 70201a294c..511533aa60 100644
--- a/sysdeps/nptl/fork.c
+++ b/sysdeps/nptl/fork.c
@@ -27,7 +27,7 @@
 #include <ldsodefs.h>
 #include <bits/stdio-lock.h>
 #include <atomic.h>
-#include <pthreadP.h>
+#include <nptl/pthreadP.h>
 #include <fork.h>
 #include <arch-fork.h>
 
diff --git a/sysdeps/nptl/gai_misc.h b/sysdeps/nptl/gai_misc.h
index 946275ed75..942f2b1b7e 100644
--- a/sysdeps/nptl/gai_misc.h
+++ b/sysdeps/nptl/gai_misc.h
@@ -22,7 +22,7 @@
 
 #include <assert.h>
 #include <signal.h>
-#include <pthreadP.h>
+#include <nptl/pthreadP.h>
 #include <lowlevellock.h>
 
 #define DONT_NEED_GAI_MISC_COND	1
diff --git a/sysdeps/nptl/internaltypes.h b/sysdeps/nptl/internaltypes.h
new file mode 100644
index 0000000000..d127f688cf
--- /dev/null
+++ b/sysdeps/nptl/internaltypes.h
@@ -0,0 +1,161 @@
+/* Copyright (C) 2002-2014 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _INTERNALTYPES_H
+#define _INTERNALTYPES_H	1
+
+#include <stdint.h>
+
+
+struct pthread_attr
+{
+  /* Scheduler parameters and priority.  */
+  struct sched_param schedparam;
+  int schedpolicy;
+  /* Various flags like detachstate, scope, etc.  */
+  int flags;
+  /* Size of guard area.  */
+  size_t guardsize;
+  /* Stack handling.  */
+  void *stackaddr;
+  size_t stacksize;
+  /* Affinity map.  */
+  cpu_set_t *cpuset;
+  size_t cpusetsize;
+};
+
+#define ATTR_FLAG_DETACHSTATE		0x0001
+#define ATTR_FLAG_NOTINHERITSCHED	0x0002
+#define ATTR_FLAG_SCOPEPROCESS		0x0004
+#define ATTR_FLAG_STACKADDR		0x0008
+#define ATTR_FLAG_OLDATTR		0x0010
+#define ATTR_FLAG_SCHED_SET		0x0020
+#define ATTR_FLAG_POLICY_SET		0x0040
+
+
+/* Mutex attribute data structure.  */
+struct pthread_mutexattr
+{
+  /* Identifier for the kind of mutex.
+
+     Bit 31 is set if the mutex is to be shared between processes.
+
+     Bit 0 to 30 contain one of the PTHREAD_MUTEX_ values to identify
+     the type of the mutex.  */
+  int mutexkind;
+};
+
+
+/* Conditional variable attribute data structure.  */
+struct pthread_condattr
+{
+  /* Combination of values:
+
+     Bit 0  : flag whether conditional variable will be sharable between
+	      processes.
+
+     Bit 1-7: clock ID.  */
+  int value;
+};
+
+
+/* The __NWAITERS field is used as a counter and to house the number
+   of bits for other purposes.  COND_CLOCK_BITS is the number
+   of bits needed to represent the ID of the clock.  COND_NWAITERS_SHIFT
+   is the number of bits reserved for other purposes like the clock.  */
+#define COND_CLOCK_BITS		1
+#define COND_NWAITERS_SHIFT	1
+
+
+/* Read-write lock variable attribute data structure.  */
+struct pthread_rwlockattr
+{
+  int lockkind;
+  int pshared;
+};
+
+
+/* Barrier data structure.  */
+struct pthread_barrier
+{
+  unsigned int curr_event;
+  int lock;
+  unsigned int left;
+  unsigned int init_count;
+  int private;
+};
+
+
+/* Barrier variable attribute data structure.  */
+struct pthread_barrierattr
+{
+  int pshared;
+};
+
+
+/* Thread-local data handling.  */
+struct pthread_key_struct
+{
+  /* Sequence numbers.  Even numbers indicated vacant entries.  Note
+     that zero is even.  We use uintptr_t to not require padding on
+     32- and 64-bit machines.  On 64-bit machines it helps to avoid
+     wrapping, too.  */
+  uintptr_t seq;
+
+  /* Destructor for the data.  */
+  void (*destr) (void *);
+};
+
+/* Check whether an entry is unused.  */
+#define KEY_UNUSED(p) (((p) & 1) == 0)
+/* Check whether a key is usable.  We cannot reuse an allocated key if
+   the sequence counter would overflow after the next destroy call.
+   This would mean that we potentially free memory for a key with the
+   same sequence.  This is *very* unlikely to happen, A program would
+   have to create and destroy a key 2^31 times (on 32-bit platforms,
+   on 64-bit platforms that would be 2^63).  If it should happen we
+   simply don't use this specific key anymore.  */
+#define KEY_USABLE(p) (((uintptr_t) (p)) < ((uintptr_t) ((p) + 2)))
+
+
+/* Handling of read-write lock data.  */
+// XXX For now there is only one flag.  Maybe more in future.
+#define RWLOCK_RECURSIVE(rwlock) ((rwlock)->__data.__flags != 0)
+
+
+/* Semaphore variable structure.  */
+struct new_sem
+{
+  unsigned int value;
+  int private;
+  unsigned long int nwaiters;
+};
+
+struct old_sem
+{
+  unsigned int value;
+};
+
+
+/* Compatibility type for old conditional variable interfaces.  */
+typedef struct
+{
+  pthread_cond_t *cond;
+} pthread_cond_2_0_t;
+
+#endif	/* internaltypes.h */
diff --git a/sysdeps/nptl/jmp-unwind.c b/sysdeps/nptl/jmp-unwind.c
index b3a960c980..0ac6b27522 100644
--- a/sysdeps/nptl/jmp-unwind.c
+++ b/sysdeps/nptl/jmp-unwind.c
@@ -18,7 +18,7 @@
 
 #include <setjmp.h>
 #include <stddef.h>
-#include <pthreadP.h>
+#include <nptl/pthreadP.h>
 
 extern void __pthread_cleanup_upto (__jmp_buf env, char *targetframe);
 #pragma weak __pthread_cleanup_upto
diff --git a/sysdeps/nptl/librt-cancellation.c b/sysdeps/nptl/librt-cancellation.c
index e512929fbe..c0258baa99 100644
--- a/sysdeps/nptl/librt-cancellation.c
+++ b/sysdeps/nptl/librt-cancellation.c
@@ -16,7 +16,7 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#include "pthreadP.h"
+#include <nptl/pthreadP.h>
 
 
 #define __pthread_enable_asynccancel __librt_enable_asynccancel
diff --git a/sysdeps/nptl/setxid.h b/sysdeps/nptl/setxid.h
index 76c88e0feb..c02e92d154 100644
--- a/sysdeps/nptl/setxid.h
+++ b/sysdeps/nptl/setxid.h
@@ -15,7 +15,7 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#include <pthreadP.h>
+#include <nptl/pthreadP.h>
 #include <sysdep.h>
 
 #define __SETXID_1(cmd, arg1) \
diff --git a/sysdeps/unix/sysv/linux/aarch64/Implies b/sysdeps/unix/sysv/linux/aarch64/Implies
index 37b6bda7f9..4409e19b92 100644
--- a/sysdeps/unix/sysv/linux/aarch64/Implies
+++ b/sysdeps/unix/sysv/linux/aarch64/Implies
@@ -1,2 +1,3 @@
+aarch64/nptl
 unix/sysv/linux/generic
 unix/sysv/linux/wordsize-64
diff --git a/sysdeps/unix/sysv/linux/alpha/Implies b/sysdeps/unix/sysv/linux/alpha/Implies
index 1616efecbe..fddb49e2c2 100644
--- a/sysdeps/unix/sysv/linux/alpha/Implies
+++ b/sysdeps/unix/sysv/linux/alpha/Implies
@@ -1,3 +1,4 @@
+alpha/nptl
 unix/sysv/linux/wordsize-64
 # These supply the ABI compatibility for when long double was double.
 ieee754/ldbl-64-128
diff --git a/sysdeps/unix/sysv/linux/arm/Implies b/sysdeps/unix/sysv/linux/arm/Implies
new file mode 100644
index 0000000000..e609c137d0
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/arm/Implies
@@ -0,0 +1 @@
+arm/nptl
diff --git a/sysdeps/unix/sysv/linux/configure b/sysdeps/unix/sysv/linux/configure
index e8f83fbd12..7825ff66ca 100644
--- a/sysdeps/unix/sysv/linux/configure
+++ b/sysdeps/unix/sysv/linux/configure
@@ -158,33 +158,6 @@ if test -n "$sysheaders"; then
   CPPFLAGS=$OLD_CPPFLAGS
 fi
 
-# Under Linux the NPTL add-on should be available.
-case $add_ons in
-  # It is available.  Good.
-  *nptl*)
-    nptl_missing=
-    ;;
-  *)
-    nptl_missing=yes
-    ;;
-esac
-
-if test "$nptl_missing"; then
-  if test $enable_sanity = yes; then
-    echo "\
-*** On GNU/Linux systems it is normal to compile GNU libc with the
-*** \`nptl' add-on.  Without that, the library will be
-*** incompatible with normal GNU/Linux systems.
-*** If you really mean to not use this add-on, run configure again
-*** using the extra parameter \`--disable-sanity-checks'."
-    exit 1
-  else
-    echo "\
-*** WARNING: Are you sure you do not want to use the \`nptl'
-*** add-on?"
-  fi
-fi
-
 if test "$prefix" = "/usr/local" -o "$prefix" = "/usr/local/" -o "$prefix" = "NONE"; then
   if test $enable_sanity = yes; then
     echo "\
diff --git a/sysdeps/unix/sysv/linux/configure.ac b/sysdeps/unix/sysv/linux/configure.ac
index 9b09b3fdd3..f207c26c77 100644
--- a/sysdeps/unix/sysv/linux/configure.ac
+++ b/sysdeps/unix/sysv/linux/configure.ac
@@ -81,33 +81,6 @@ if test -n "$sysheaders"; then
   CPPFLAGS=$OLD_CPPFLAGS
 fi
 
-# Under Linux the NPTL add-on should be available.
-case $add_ons in
-  # It is available.  Good.
-  *nptl*)
-    nptl_missing=
-    ;;
-  *)
-    nptl_missing=yes
-    ;;
-esac
-
-if test "$nptl_missing"; then
-  if test $enable_sanity = yes; then
-    echo "\
-*** On GNU/Linux systems it is normal to compile GNU libc with the
-*** \`nptl' add-on.  Without that, the library will be
-*** incompatible with normal GNU/Linux systems.
-*** If you really mean to not use this add-on, run configure again
-*** using the extra parameter \`--disable-sanity-checks'."
-    exit 1
-  else
-    echo "\
-*** WARNING: Are you sure you do not want to use the \`nptl'
-*** add-on?"
-  fi
-fi
-
 if test "$prefix" = "/usr/local" -o "$prefix" = "/usr/local/" -o "$prefix" = "NONE"; then
   if test $enable_sanity = yes; then
     echo "\
diff --git a/sysdeps/unix/sysv/linux/hppa/Implies b/sysdeps/unix/sysv/linux/hppa/Implies
new file mode 100644
index 0000000000..c3d145cb44
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/hppa/Implies
@@ -0,0 +1 @@
+hppa/nptl
diff --git a/sysdeps/unix/sysv/linux/i386/Implies b/sysdeps/unix/sysv/linux/i386/Implies
index ccc7eaa8a4..4bf5f8b520 100644
--- a/sysdeps/unix/sysv/linux/i386/Implies
+++ b/sysdeps/unix/sysv/linux/i386/Implies
@@ -1 +1,2 @@
 unix/sysv/linux/x86
+i386/nptl
diff --git a/sysdeps/unix/sysv/linux/i386/i686/Implies b/sysdeps/unix/sysv/linux/i386/i686/Implies
new file mode 100644
index 0000000000..8948a800bb
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/i386/i686/Implies
@@ -0,0 +1 @@
+i386/i686/nptl
diff --git a/sysdeps/unix/sysv/linux/ia64/Implies b/sysdeps/unix/sysv/linux/ia64/Implies
index 8d91c80097..9762539f9c 100644
--- a/sysdeps/unix/sysv/linux/ia64/Implies
+++ b/sysdeps/unix/sysv/linux/ia64/Implies
@@ -1 +1,2 @@
+ia64/nptl
 unix/sysv/linux/wordsize-64
diff --git a/sysdeps/unix/sysv/linux/m68k/Implies b/sysdeps/unix/sysv/linux/m68k/Implies
new file mode 100644
index 0000000000..77f1f7dd2b
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/m68k/Implies
@@ -0,0 +1 @@
+m68k/nptl
diff --git a/sysdeps/unix/sysv/linux/microblaze/Implies b/sysdeps/unix/sysv/linux/microblaze/Implies
new file mode 100644
index 0000000000..469a141418
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/microblaze/Implies
@@ -0,0 +1 @@
+microblaze/nptl
diff --git a/sysdeps/unix/sysv/linux/mips/Implies b/sysdeps/unix/sysv/linux/mips/Implies
new file mode 100644
index 0000000000..656fa77b63
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/Implies
@@ -0,0 +1 @@
+mips/nptl
diff --git a/sysdeps/unix/sysv/linux/powerpc/Implies b/sysdeps/unix/sysv/linux/powerpc/Implies
new file mode 100644
index 0000000000..466b7f4b4a
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/powerpc/Implies
@@ -0,0 +1 @@
+powerpc/nptl
diff --git a/sysdeps/unix/sysv/linux/s390/Implies b/sysdeps/unix/sysv/linux/s390/Implies
index efda9d27c0..e6e51fa5a7 100644
--- a/sysdeps/unix/sysv/linux/s390/Implies
+++ b/sysdeps/unix/sysv/linux/s390/Implies
@@ -1,3 +1,5 @@
+s390/nptl
+
 # These supply the ABI compatibility for when long double was double.
 ieee754/ldbl-64-128
 ieee754/ldbl-opt
diff --git a/sysdeps/unix/sysv/linux/sh/Implies b/sysdeps/unix/sysv/linux/sh/Implies
new file mode 100644
index 0000000000..c15a97e222
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/sh/Implies
@@ -0,0 +1 @@
+sh/nptl
diff --git a/sysdeps/unix/sysv/linux/sparc/Implies b/sysdeps/unix/sysv/linux/sparc/Implies
new file mode 100644
index 0000000000..a8cc375171
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/sparc/Implies
@@ -0,0 +1 @@
+sparc/nptl
diff --git a/sysdeps/unix/sysv/linux/tile/Implies b/sysdeps/unix/sysv/linux/tile/Implies
new file mode 100644
index 0000000000..e050152859
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/tile/Implies
@@ -0,0 +1 @@
+tile/nptl
diff --git a/sysdeps/unix/sysv/linux/x86_64/Implies b/sysdeps/unix/sysv/linux/x86_64/Implies
index c7a65c9386..c9be3c4711 100644
--- a/sysdeps/unix/sysv/linux/x86_64/Implies
+++ b/sysdeps/unix/sysv/linux/x86_64/Implies
@@ -1,2 +1,3 @@
 unix/sysv/linux/x86
 unix/sysv/linux/wordsize-64
+x86_64/nptl
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/Implies b/sysdeps/unix/sysv/linux/x86_64/x32/Implies
new file mode 100644
index 0000000000..b287872e93
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/Implies
@@ -0,0 +1 @@
+x86_64/x32/nptl