mirror of git://sourceware.org/git/glibc.git
* init.c (__pthread_initialize_minimal_internal): Cheat a bit by
only passing five parameters to FUTEX_WAIT_BITSET call. * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S (__lll_timedlock_wait): Use FUTEX_WAIT_BITSET|FUTEX_CLOCK_READTIME instead of computing relative timeout.
This commit is contained in:
parent
45f7760695
commit
19834b42f6
|
|
@ -1,3 +1,12 @@
|
||||||
|
2009-01-03 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
|
* init.c (__pthread_initialize_minimal_internal): Cheat a bit by
|
||||||
|
only passing five parameters to FUTEX_WAIT_BITSET call.
|
||||||
|
|
||||||
|
* sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
|
||||||
|
(__lll_timedlock_wait): Use FUTEX_WAIT_BITSET|FUTEX_CLOCK_READTIME
|
||||||
|
instead of computing relative timeout.
|
||||||
|
|
||||||
2009-01-02 Ulrich Drepper <drepper@redhat.com>
|
2009-01-02 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
* init.c (__pthread_initialize_minimal_internal): Check for
|
* init.c (__pthread_initialize_minimal_internal): Check for
|
||||||
|
|
|
||||||
10
nptl/init.c
10
nptl/init.c
|
|
@ -305,10 +305,14 @@ __pthread_initialize_minimal_internal (void)
|
||||||
#ifndef __ASSUME_FUTEX_CLOCK_REALTIME
|
#ifndef __ASSUME_FUTEX_CLOCK_REALTIME
|
||||||
{
|
{
|
||||||
int word = 0;
|
int word = 0;
|
||||||
word = INTERNAL_SYSCALL (futex, err, 6, &word,
|
/* NB: the syscall actually takes six parameters. The last is the
|
||||||
|
bit mask. But since we will not actually wait at all the value
|
||||||
|
is irrelevant. Given that passing six parameters is difficult
|
||||||
|
on some architectures we just pass whatever random value the
|
||||||
|
calling convention calls for to the kernel. It causes no harm. */
|
||||||
|
word = INTERNAL_SYSCALL (futex, err, 5, &word,
|
||||||
FUTEX_WAIT_BITSET | FUTEX_CLOCK_REALTIME
|
FUTEX_WAIT_BITSET | FUTEX_CLOCK_REALTIME
|
||||||
| FUTEX_PRIVATE_FLAG, 1, NULL, 0,
|
| FUTEX_PRIVATE_FLAG, 1, NULL, 0);
|
||||||
FUTEX_BITSET_MATCH_ANY);
|
|
||||||
if (!INTERNAL_SYSCALL_ERROR_P (word, err)
|
if (!INTERNAL_SYSCALL_ERROR_P (word, err)
|
||||||
|| (INTERNAL_SYSCALL_ERRNO (word, err) != ENOSYS
|
|| (INTERNAL_SYSCALL_ERRNO (word, err) != ENOSYS
|
||||||
&& INTERNAL_SYSCALL_ERRNO (word, err) != EINVAL))
|
&& INTERNAL_SYSCALL_ERRNO (word, err) != EINVAL))
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue