diff options
author | Roland McGrath <roland@hack.frob.com> | 2014-07-07 09:29:06 -0700 |
---|---|---|
committer | Roland McGrath <roland@hack.frob.com> | 2014-07-07 09:29:06 -0700 |
commit | f083450f45f580bf33fa345ddadb897dc85d78e8 (patch) | |
tree | 097dde3e3e42b0921bf778be8b1f52d2376756ef /sysdeps/nptl | |
parent | 08192659bbeae149e7cb1f4c43547257f7099bb0 (diff) | |
download | glibc-f083450f45f580bf33fa345ddadb897dc85d78e8.zip glibc-f083450f45f580bf33fa345ddadb897dc85d78e8.tar.gz glibc-f083450f45f580bf33fa345ddadb897dc85d78e8.tar.bz2 |
NPTL is no longer an add-on!
Diffstat (limited to 'sysdeps/nptl')
-rw-r--r-- | sysdeps/nptl/Makeconfig | 32 | ||||
-rw-r--r-- | sysdeps/nptl/aio_misc.h | 2 | ||||
-rw-r--r-- | sysdeps/nptl/fork.c | 2 | ||||
-rw-r--r-- | sysdeps/nptl/gai_misc.h | 2 | ||||
-rw-r--r-- | sysdeps/nptl/internaltypes.h | 161 | ||||
-rw-r--r-- | sysdeps/nptl/jmp-unwind.c | 2 | ||||
-rw-r--r-- | sysdeps/nptl/librt-cancellation.c | 2 | ||||
-rw-r--r-- | sysdeps/nptl/setxid.h | 2 |
8 files changed, 199 insertions, 6 deletions
diff --git a/sysdeps/nptl/Makeconfig b/sysdeps/nptl/Makeconfig new file mode 100644 index 0000000..bfd1db0 --- /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 ac3488c..c3de84b 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 70201a2..511533a 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 946275e..942f2b1b 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 0000000..d127f68 --- /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 b3a960c..0ac6b27 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 e512929..c0258ba 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 76c88e0..c02e92d 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) \ |