From: Ulrich Drepper Date: Sat, 29 Jul 2006 05:07:43 +0000 (+0000) Subject: * sysdeps/unix/sysv/linux/kernel-features.h: Define X-Git-Tag: cvs/fedora-glibc-20060729T2255 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d5ba53f90790e2c3e9c95e39db32067d7e25b34e;p=thirdparty%2Fglibc.git * sysdeps/unix/sysv/linux/kernel-features.h: Define __ASSUME_FUTEX_LOCK_PI. * include/time.h: Declare __nanosleep_nocancel. * include/unistd.h: Declare __pause_nocancel. --- diff --git a/ChangeLog b/ChangeLog index 4c72197ccf5..dfca3fceb34 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2006-07-28 Ulrich Drepper + * sysdeps/unix/sysv/linux/kernel-features.h: Define + __ASSUME_FUTEX_LOCK_PI. + * include/time.h: Declare __nanosleep_nocancel. + * include/unistd.h: Declare __pause_nocancel. + * dlfcn/Makefile (LDLIBS-bug-atexit3-lib.so): Use this instead of LDFLAGS. Add -lgcc_eh and libc_nonshared (again) to make sure we get the __stack_chk_fail_local definition when it's needed. diff --git a/NEWS b/NEWS index 0f730299789..55855ad81a2 100644 --- a/NEWS +++ b/NEWS @@ -1,4 +1,4 @@ -GNU C Library NEWS -- history of user-visible changes. 2006-07-10 +GNU C Library NEWS -- history of user-visible changes. 2006-07-28 Copyright (C) 1992-2002,2003,2004,2005,2006 Free Software Foundation, Inc. See the end for copying conditions. @@ -33,6 +33,9 @@ Version 2.5 * Support for the new ELF hash table format was added by Ulrich Drepper. +* Support for priority inheritance mutexes added by Jakub Jelinek and + Ulrich Drepper. + Version 2.4 diff --git a/include/time.h b/include/time.h index 224736540be..f2a6489efd1 100644 --- a/include/time.h +++ b/include/time.h @@ -81,6 +81,8 @@ extern long int __tzname_max (void); extern int __nanosleep (__const struct timespec *__requested_time, struct timespec *__remaining); +extern int __nanosleep_nocancel (__const struct timespec *__requested_time, + struct timespec *__remaining); libc_hidden_proto(__nanosleep) extern int __getdate_r (__const char *__string, struct tm *__resbufp); diff --git a/include/unistd.h b/include/unistd.h index f8f15ed0194..fb7a044b579 100644 --- a/include/unistd.h +++ b/include/unistd.h @@ -162,5 +162,7 @@ extern __pid_t __libc_fork (void); /* Suspend the process until a signal arrives. This always returns -1 and sets `errno' to EINTR. */ extern int __libc_pause (void); +/* Not cancelable variant. */ +extern int __pause_nocancel (void); #endif diff --git a/nptl/ChangeLog b/nptl/ChangeLog index 073106c2973..46a7f333453 100644 --- a/nptl/ChangeLog +++ b/nptl/ChangeLog @@ -20,6 +20,12 @@ * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Define FUTEX_LOCK_PI, FUTEX_UNLOCK_PI, and FUTEX_TRYLOCK_PI. * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Likewise. + * sysdeps/unix/sysv/linux/alpha/lowlevellock.h: Likewise. + * sysdeps/unix/sysv/linux/ia64/lowlevellock.h: Likewise. + * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Likewise. + * sysdeps/unix/sysv/linux/s390/lowlevellock.h: Likewise. + * sysdeps/unix/sysv/linux/sh/lowlevellock.h: Likewise. + * sysdeps/unix/sysv/linux/sparc/lowlevellock.h: Likewise. * sysdeps/unix/sysv/linux/bits/posix_opt.h: Define _POSIX_THREAD_PRIO_INHERIT to 200112L. * tst-mutex1.c: Adjust to allow use in PI mutex test. diff --git a/nptl/sysdeps/unix/sysv/linux/alpha/lowlevellock.h b/nptl/sysdeps/unix/sysv/linux/alpha/lowlevellock.h index 1a2e8cbb071..58b4806eb25 100644 --- a/nptl/sysdeps/unix/sysv/linux/alpha/lowlevellock.h +++ b/nptl/sysdeps/unix/sysv/linux/alpha/lowlevellock.h @@ -33,6 +33,9 @@ #define FUTEX_CMP_REQUEUE 4 #define FUTEX_WAKE_OP 5 #define FUTEX_OP_CLEAR_WAKE_IF_GT_ONE ((4 << 24) | 1) +#define FUTEX_LOCK_PI 6 +#define FUTEX_UNLOCK_PI 7 +#define FUTEX_TRYLOCK_PI 8 /* Initializer for compatibility lock. */ #define LLL_MUTEX_LOCK_INITIALIZER (0) diff --git a/nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h b/nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h index 639f6a0b8f5..ac788ebe5a6 100644 --- a/nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h +++ b/nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h @@ -35,6 +35,9 @@ #define SYS_futex 240 #define FUTEX_WAIT 0 #define FUTEX_WAKE 1 +#define FUTEX_LOCK_PI 6 +#define FUTEX_UNLOCK_PI 7 +#define FUTEX_TRYLOCK_PI 8 /* Initializer for compatibility lock. */ diff --git a/nptl/sysdeps/unix/sysv/linux/ia64/lowlevellock.h b/nptl/sysdeps/unix/sysv/linux/ia64/lowlevellock.h index ece9a7fc729..8df997a2627 100644 --- a/nptl/sysdeps/unix/sysv/linux/ia64/lowlevellock.h +++ b/nptl/sysdeps/unix/sysv/linux/ia64/lowlevellock.h @@ -33,6 +33,9 @@ #define FUTEX_CMP_REQUEUE 4 #define FUTEX_WAKE_OP 5 #define FUTEX_OP_CLEAR_WAKE_IF_GT_ONE ((4 << 24) | 1) +#define FUTEX_LOCK_PI 6 +#define FUTEX_UNLOCK_PI 7 +#define FUTEX_TRYLOCK_PI 8 /* Delay in spinlock loop. */ #define BUSY_WAIT_NOP asm ("hint @pause") diff --git a/nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h b/nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h index abd019df47a..0136b975955 100644 --- a/nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h +++ b/nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h @@ -35,6 +35,9 @@ #define FUTEX_CMP_REQUEUE 4 #define FUTEX_WAKE_OP 5 #define FUTEX_OP_CLEAR_WAKE_IF_GT_ONE ((4 << 24) | 1) +#define FUTEX_LOCK_PI 6 +#define FUTEX_UNLOCK_PI 7 +#define FUTEX_TRYLOCK_PI 8 /* Initializer for compatibility lock. */ #define LLL_MUTEX_LOCK_INITIALIZER (0) diff --git a/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.h b/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.h index 6baab90f561..38d9f2ac41f 100644 --- a/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.h +++ b/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.h @@ -32,6 +32,9 @@ #define FUTEX_CMP_REQUEUE 4 #define FUTEX_WAKE_OP 5 #define FUTEX_OP_CLEAR_WAKE_IF_GT_ONE ((4 << 24) | 1) +#define FUTEX_LOCK_PI 6 +#define FUTEX_UNLOCK_PI 7 +#define FUTEX_TRYLOCK_PI 8 /* Initializer for compatibility lock. */ #define LLL_MUTEX_LOCK_INITIALIZER (0) diff --git a/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.h b/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.h index 92f93cd5f5c..0eb1f0114ce 100644 --- a/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.h +++ b/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.h @@ -26,6 +26,9 @@ #define SYS_futex 240 #define FUTEX_WAIT 0 #define FUTEX_WAKE 1 +#define FUTEX_LOCK_PI 6 +#define FUTEX_UNLOCK_PI 7 +#define FUTEX_TRYLOCK_PI 8 /* Initializer for compatibility lock. */ diff --git a/nptl/sysdeps/unix/sysv/linux/sparc/lowlevellock.h b/nptl/sysdeps/unix/sysv/linux/sparc/lowlevellock.h index 77eefc546c0..5013922a2f6 100644 --- a/nptl/sysdeps/unix/sysv/linux/sparc/lowlevellock.h +++ b/nptl/sysdeps/unix/sysv/linux/sparc/lowlevellock.h @@ -32,6 +32,9 @@ #define FUTEX_CMP_REQUEUE 4 #define FUTEX_WAKE_OP 5 #define FUTEX_OP_CLEAR_WAKE_IF_GT_ONE ((4 << 24) | 1) +#define FUTEX_LOCK_PI 6 +#define FUTEX_UNLOCK_PI 7 +#define FUTEX_TRYLOCK_PI 8 /* Initializer for compatibility lock. */ #define LLL_MUTEX_LOCK_INITIALIZER (0) diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h b/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h index 95e6923d4d0..c354e8489c1 100644 --- a/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h +++ b/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h @@ -35,6 +35,9 @@ #define SYS_futex 202 #define FUTEX_WAIT 0 #define FUTEX_WAKE 1 +#define FUTEX_LOCK_PI 6 +#define FUTEX_UNLOCK_PI 7 +#define FUTEX_TRYLOCK_PI 8 /* Initializer for compatibility lock. */ diff --git a/sysdeps/unix/sysv/linux/kernel-features.h b/sysdeps/unix/sysv/linux/kernel-features.h index 139e3d5a729..e54f675dbe5 100644 --- a/sysdeps/unix/sysv/linux/kernel-features.h +++ b/sysdeps/unix/sysv/linux/kernel-features.h @@ -431,29 +431,30 @@ /* pselect was introduced just after 2.6.16-rc1. Due to the way the kernel versions are advertised we can only rely on 2.6.17 to have the code. */ -#if __LINUX_KERNEL_VERSION >= 0x020611 \ - && (defined __i386__ || defined __powerpc__) +#if __LINUX_KERNEL_VERSION >= 0x020611 && !defined __x86_64__ # define __ASSUME_PSELECT 1 #endif /* ppoll was introduced just after 2.6.16-rc1. Due to the way the kernel versions are advertised we can only rely on 2.6.17 to have the code. */ -#if __LINUX_KERNEL_VERSION >= 0x020611 \ - && (defined __i386__ || defined __powerpc__) +#if __LINUX_KERNEL_VERSION >= 0x020611 && !defined __x86_64__ # define __ASSUME_PPOLL 1 #endif /* The *at syscalls were introduced just after 2.6.16-rc1. Due to the way the kernel versions are advertised we can only rely on 2.6.17 to have the code. */ -#if __LINUX_KERNEL_VERSION >= 0x020611 \ - && (defined __i386__ || defined __x86_64__) +#if __LINUX_KERNEL_VERSION >= 0x020611 # define __ASSUME_ATFCTS 1 #endif /* Support for inter-process robust mutexes was added in 2.6.17. */ -#if __LINUX_KERNEL_VERSION >= 0x020611 \ - && (defined __i386__ || defined __x86_64__) +#if __LINUX_KERNEL_VERSION >= 0x020611 # define __ASSUME_SET_ROBUST_LIST 1 #endif + +/* Support for PI futexes was added in 2.6.18. */ +#if __LINUX_KERNEL_VERSION >= 0x020612 +# define __ASSUME_FUTEX_LOCK_PI 1 +#endif