* sysdeps/unix/sysv/linux/kernel-features.h: Define

__ASSUME_FUTEX_LOCK_PI.
	* include/time.h: Declare __nanosleep_nocancel.
	* include/unistd.h: Declare __pause_nocancel.
This commit is contained in:
Ulrich Drepper 2006-07-29 05:07:43 +00:00
parent df47504c78
commit d5ba53f907
14 changed files with 52 additions and 9 deletions

View File

@ -1,5 +1,10 @@
2006-07-28 Ulrich Drepper <drepper@redhat.com> 2006-07-28 Ulrich Drepper <drepper@redhat.com>
* 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 * dlfcn/Makefile (LDLIBS-bug-atexit3-lib.so): Use this instead of
LDFLAGS. Add -lgcc_eh and libc_nonshared (again) to make sure we LDFLAGS. Add -lgcc_eh and libc_nonshared (again) to make sure we
get the __stack_chk_fail_local definition when it's needed. get the __stack_chk_fail_local definition when it's needed.

5
NEWS
View File

@ -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. Copyright (C) 1992-2002,2003,2004,2005,2006 Free Software Foundation, Inc.
See the end for copying conditions. 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 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 Version 2.4

View File

@ -81,6 +81,8 @@ extern long int __tzname_max (void);
extern int __nanosleep (__const struct timespec *__requested_time, extern int __nanosleep (__const struct timespec *__requested_time,
struct timespec *__remaining); struct timespec *__remaining);
extern int __nanosleep_nocancel (__const struct timespec *__requested_time,
struct timespec *__remaining);
libc_hidden_proto(__nanosleep) libc_hidden_proto(__nanosleep)
extern int __getdate_r (__const char *__string, struct tm *__resbufp); extern int __getdate_r (__const char *__string, struct tm *__resbufp);

View File

@ -162,5 +162,7 @@ extern __pid_t __libc_fork (void);
/* Suspend the process until a signal arrives. /* Suspend the process until a signal arrives.
This always returns -1 and sets `errno' to EINTR. */ This always returns -1 and sets `errno' to EINTR. */
extern int __libc_pause (void); extern int __libc_pause (void);
/* Not cancelable variant. */
extern int __pause_nocancel (void);
#endif #endif

View File

@ -20,6 +20,12 @@
* sysdeps/unix/sysv/linux/i386/lowlevellock.h: Define FUTEX_LOCK_PI, * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Define FUTEX_LOCK_PI,
FUTEX_UNLOCK_PI, and FUTEX_TRYLOCK_PI. FUTEX_UNLOCK_PI, and FUTEX_TRYLOCK_PI.
* sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Likewise. * 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 * sysdeps/unix/sysv/linux/bits/posix_opt.h: Define
_POSIX_THREAD_PRIO_INHERIT to 200112L. _POSIX_THREAD_PRIO_INHERIT to 200112L.
* tst-mutex1.c: Adjust to allow use in PI mutex test. * tst-mutex1.c: Adjust to allow use in PI mutex test.

View File

@ -33,6 +33,9 @@
#define FUTEX_CMP_REQUEUE 4 #define FUTEX_CMP_REQUEUE 4
#define FUTEX_WAKE_OP 5 #define FUTEX_WAKE_OP 5
#define FUTEX_OP_CLEAR_WAKE_IF_GT_ONE ((4 << 24) | 1) #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. */ /* Initializer for compatibility lock. */
#define LLL_MUTEX_LOCK_INITIALIZER (0) #define LLL_MUTEX_LOCK_INITIALIZER (0)

View File

@ -35,6 +35,9 @@
#define SYS_futex 240 #define SYS_futex 240
#define FUTEX_WAIT 0 #define FUTEX_WAIT 0
#define FUTEX_WAKE 1 #define FUTEX_WAKE 1
#define FUTEX_LOCK_PI 6
#define FUTEX_UNLOCK_PI 7
#define FUTEX_TRYLOCK_PI 8
/* Initializer for compatibility lock. */ /* Initializer for compatibility lock. */

View File

@ -33,6 +33,9 @@
#define FUTEX_CMP_REQUEUE 4 #define FUTEX_CMP_REQUEUE 4
#define FUTEX_WAKE_OP 5 #define FUTEX_WAKE_OP 5
#define FUTEX_OP_CLEAR_WAKE_IF_GT_ONE ((4 << 24) | 1) #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. */ /* Delay in spinlock loop. */
#define BUSY_WAIT_NOP asm ("hint @pause") #define BUSY_WAIT_NOP asm ("hint @pause")

View File

@ -35,6 +35,9 @@
#define FUTEX_CMP_REQUEUE 4 #define FUTEX_CMP_REQUEUE 4
#define FUTEX_WAKE_OP 5 #define FUTEX_WAKE_OP 5
#define FUTEX_OP_CLEAR_WAKE_IF_GT_ONE ((4 << 24) | 1) #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. */ /* Initializer for compatibility lock. */
#define LLL_MUTEX_LOCK_INITIALIZER (0) #define LLL_MUTEX_LOCK_INITIALIZER (0)

View File

@ -32,6 +32,9 @@
#define FUTEX_CMP_REQUEUE 4 #define FUTEX_CMP_REQUEUE 4
#define FUTEX_WAKE_OP 5 #define FUTEX_WAKE_OP 5
#define FUTEX_OP_CLEAR_WAKE_IF_GT_ONE ((4 << 24) | 1) #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. */ /* Initializer for compatibility lock. */
#define LLL_MUTEX_LOCK_INITIALIZER (0) #define LLL_MUTEX_LOCK_INITIALIZER (0)

View File

@ -26,6 +26,9 @@
#define SYS_futex 240 #define SYS_futex 240
#define FUTEX_WAIT 0 #define FUTEX_WAIT 0
#define FUTEX_WAKE 1 #define FUTEX_WAKE 1
#define FUTEX_LOCK_PI 6
#define FUTEX_UNLOCK_PI 7
#define FUTEX_TRYLOCK_PI 8
/* Initializer for compatibility lock. */ /* Initializer for compatibility lock. */

View File

@ -32,6 +32,9 @@
#define FUTEX_CMP_REQUEUE 4 #define FUTEX_CMP_REQUEUE 4
#define FUTEX_WAKE_OP 5 #define FUTEX_WAKE_OP 5
#define FUTEX_OP_CLEAR_WAKE_IF_GT_ONE ((4 << 24) | 1) #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. */ /* Initializer for compatibility lock. */
#define LLL_MUTEX_LOCK_INITIALIZER (0) #define LLL_MUTEX_LOCK_INITIALIZER (0)

View File

@ -35,6 +35,9 @@
#define SYS_futex 202 #define SYS_futex 202
#define FUTEX_WAIT 0 #define FUTEX_WAIT 0
#define FUTEX_WAKE 1 #define FUTEX_WAKE 1
#define FUTEX_LOCK_PI 6
#define FUTEX_UNLOCK_PI 7
#define FUTEX_TRYLOCK_PI 8
/* Initializer for compatibility lock. */ /* Initializer for compatibility lock. */

View File

@ -431,29 +431,30 @@
/* pselect was introduced just after 2.6.16-rc1. Due to the way the /* 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 kernel versions are advertised we can only rely on 2.6.17 to have
the code. */ the code. */
#if __LINUX_KERNEL_VERSION >= 0x020611 \ #if __LINUX_KERNEL_VERSION >= 0x020611 && !defined __x86_64__
&& (defined __i386__ || defined __powerpc__)
# define __ASSUME_PSELECT 1 # define __ASSUME_PSELECT 1
#endif #endif
/* ppoll was introduced just after 2.6.16-rc1. Due to the way the /* 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 kernel versions are advertised we can only rely on 2.6.17 to have
the code. */ the code. */
#if __LINUX_KERNEL_VERSION >= 0x020611 \ #if __LINUX_KERNEL_VERSION >= 0x020611 && !defined __x86_64__
&& (defined __i386__ || defined __powerpc__)
# define __ASSUME_PPOLL 1 # define __ASSUME_PPOLL 1
#endif #endif
/* The *at syscalls were introduced just after 2.6.16-rc1. Due to the way the /* 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 kernel versions are advertised we can only rely on 2.6.17 to have
the code. */ the code. */
#if __LINUX_KERNEL_VERSION >= 0x020611 \ #if __LINUX_KERNEL_VERSION >= 0x020611
&& (defined __i386__ || defined __x86_64__)
# define __ASSUME_ATFCTS 1 # define __ASSUME_ATFCTS 1
#endif #endif
/* Support for inter-process robust mutexes was added in 2.6.17. */ /* Support for inter-process robust mutexes was added in 2.6.17. */
#if __LINUX_KERNEL_VERSION >= 0x020611 \ #if __LINUX_KERNEL_VERSION >= 0x020611
&& (defined __i386__ || defined __x86_64__)
# define __ASSUME_SET_ROBUST_LIST 1 # define __ASSUME_SET_ROBUST_LIST 1
#endif #endif
/* Support for PI futexes was added in 2.6.18. */
#if __LINUX_KERNEL_VERSION >= 0x020612
# define __ASSUME_FUTEX_LOCK_PI 1
#endif