mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-09 23:00:07 +00:00
* pthread_getattr_np.c: No need to install a cancellation handler,
this is no cancellation point. * pthread_getschedparam.c: Likewise. * pthread_setschedparam.c: Likewise. * pthread_setschedprio.c: Likewise. * sysdeps/unix/sysv/linux/lowlevellock.c: Remove all traces of lll_unlock_wake_cb. * sysdeps/unix/sysv/linux/alpha/lowlevellock.h: Likewise. * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Likewise. * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S: 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.S: Likewise. * sysdeps/unix/sysv/linux/sh/lowlevellock.h: Likewise. * sysdeps/unix/sysv/linux/sparc/lowlevellock.h: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc32/lowlevellock.c: Likewise. * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S: Likewise. * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Likewise.
This commit is contained in:
parent
fc3f0ccb98
commit
b03b0c2920
@ -1,8 +1,24 @@
|
||||
2007-05-29 Ulrich Drepper <drepper@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
|
||||
(__lll_mutex_unlock_wake): Add back label '1' which went AWOL quite
|
||||
some time ago.
|
||||
* pthread_getattr_np.c: No need to install a cancellation handler,
|
||||
this is no cancellation point.
|
||||
* pthread_getschedparam.c: Likewise.
|
||||
* pthread_setschedparam.c: Likewise.
|
||||
* pthread_setschedprio.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/lowlevellock.c: Remove all traces of
|
||||
lll_unlock_wake_cb.
|
||||
* sysdeps/unix/sysv/linux/alpha/lowlevellock.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/i386/lowlevellock.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S: 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.S: Likewise.
|
||||
* sysdeps/unix/sysv/linux/sh/lowlevellock.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/sparc/lowlevellock.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/sparc/sparc32/lowlevellock.c: Likewise.
|
||||
* sysdeps/unix/sysv/linux/x86_64/lowlevellock.S: Likewise.
|
||||
* sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Likewise.
|
||||
|
||||
* sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S: Checking
|
||||
whether there are more than one thread makes no sense here since
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 2002, 2003, 2004, 2006 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 2002, 2003, 2004, 2006, 2007 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
|
||||
|
||||
@ -39,10 +39,6 @@ pthread_getattr_np (thread_id, attr)
|
||||
struct pthread_attr *iattr = (struct pthread_attr *) attr;
|
||||
int ret = 0;
|
||||
|
||||
/* We have to handle cancellation in the following code since we are
|
||||
locking another threads desriptor. */
|
||||
pthread_cleanup_push ((void (*) (void *)) lll_unlock_wake_cb, &thread->lock);
|
||||
|
||||
lll_lock (thread->lock);
|
||||
|
||||
/* The thread library is responsible for keeping the values in the
|
||||
@ -175,7 +171,5 @@ pthread_getattr_np (thread_id, attr)
|
||||
|
||||
lll_unlock (thread->lock);
|
||||
|
||||
pthread_cleanup_pop (0);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 2002, 2003, 2004, 2007 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
|
||||
|
||||
@ -38,10 +38,6 @@ __pthread_getschedparam (threadid, policy, param)
|
||||
|
||||
int result = 0;
|
||||
|
||||
/* We have to handle cancellation in the following code since we are
|
||||
locking another threads descriptor. */
|
||||
pthread_cleanup_push ((void (*) (void *)) lll_unlock_wake_cb, &pd->lock);
|
||||
|
||||
lll_lock (pd->lock);
|
||||
|
||||
/* The library is responsible for maintaining the values at all
|
||||
@ -74,8 +70,6 @@ __pthread_getschedparam (threadid, policy, param)
|
||||
|
||||
lll_unlock (pd->lock);
|
||||
|
||||
pthread_cleanup_pop (0);
|
||||
|
||||
return result;
|
||||
}
|
||||
strong_alias (__pthread_getschedparam, pthread_getschedparam)
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 2002, 2003, 2004, 2006 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 2002, 2003, 2004, 2006, 2007 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
|
||||
|
||||
@ -39,10 +39,6 @@ __pthread_setschedparam (threadid, policy, param)
|
||||
|
||||
int result = 0;
|
||||
|
||||
/* We have to handle cancellation in the following code since we are
|
||||
locking another threads desriptor. */
|
||||
pthread_cleanup_push ((void (*) (void *)) lll_unlock_wake_cb, &pd->lock);
|
||||
|
||||
lll_lock (pd->lock);
|
||||
|
||||
struct sched_param p;
|
||||
@ -73,8 +69,6 @@ __pthread_setschedparam (threadid, policy, param)
|
||||
|
||||
lll_unlock (pd->lock);
|
||||
|
||||
pthread_cleanup_pop (0);
|
||||
|
||||
return result;
|
||||
}
|
||||
strong_alias (__pthread_setschedparam, pthread_setschedparam)
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 2002, 2003, 2004, 2007 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
|
||||
|
||||
@ -41,10 +41,6 @@ pthread_setschedprio (threadid, prio)
|
||||
struct sched_param param;
|
||||
param.sched_priority = prio;
|
||||
|
||||
/* We have to handle cancellation in the following code since we are
|
||||
locking another threads desriptor. */
|
||||
pthread_cleanup_push ((void (*) (void *)) lll_unlock_wake_cb, &pd->lock);
|
||||
|
||||
lll_lock (pd->lock);
|
||||
|
||||
/* If the thread should have higher priority because of some
|
||||
@ -66,7 +62,5 @@ pthread_setschedprio (threadid, prio)
|
||||
|
||||
lll_unlock (pd->lock);
|
||||
|
||||
pthread_cleanup_pop (0);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 2003, 2004, 2006 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 2003, 2004, 2006, 2007 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
@ -237,8 +237,6 @@ typedef int lll_lock_t;
|
||||
#define LLL_LOCK_INITIALIZER (0)
|
||||
#define LLL_LOCK_INITIALIZER_LOCKED (1)
|
||||
|
||||
extern int lll_unlock_wake_cb (int *__futex) attribute_hidden;
|
||||
|
||||
/* The states of a lock are:
|
||||
0 - untaken
|
||||
1 - taken by one user
|
||||
|
@ -219,35 +219,6 @@ __lll_mutex_timedlock_wait:
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef NOT_IN_libc
|
||||
.globl lll_unlock_wake_cb
|
||||
.type lll_unlock_wake_cb,@function
|
||||
.hidden lll_unlock_wake_cb
|
||||
.align 16
|
||||
lll_unlock_wake_cb:
|
||||
pushl %ebx
|
||||
pushl %ecx
|
||||
pushl %edx
|
||||
|
||||
movl 20(%esp), %ebx
|
||||
LOCK
|
||||
subl $1, (%ebx)
|
||||
je 1f
|
||||
|
||||
movl $FUTEX_WAKE, %ecx
|
||||
movl $1, %edx /* Wake one thread. */
|
||||
movl $SYS_futex, %eax
|
||||
movl $0, (%ebx)
|
||||
ENTER_KERNEL
|
||||
|
||||
1: popl %edx
|
||||
popl %ecx
|
||||
popl %ebx
|
||||
ret
|
||||
.size lll_unlock_wake_cb,.-lll_unlock_wake_cb
|
||||
#endif
|
||||
|
||||
|
||||
.globl __lll_mutex_unlock_wake
|
||||
.type __lll_mutex_unlock_wake,@function
|
||||
.hidden __lll_mutex_unlock_wake
|
||||
|
@ -449,7 +449,6 @@ extern int __lll_lock_wait (int val, int *__futex)
|
||||
__attribute ((regparm (2))) attribute_hidden;
|
||||
extern int __lll_unlock_wake (int *__futex)
|
||||
__attribute ((regparm (1))) attribute_hidden;
|
||||
extern int lll_unlock_wake_cb (int *__futex) attribute_hidden;
|
||||
|
||||
|
||||
/* The states of a lock are:
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 2003, 2004, 2006 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 2003, 2004, 2006, 2007 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
|
||||
|
||||
@ -226,8 +226,6 @@ extern int __lll_robust_timedlock_wait (int *futex, const struct timespec *)
|
||||
/* Type for lock object. */
|
||||
typedef int lll_lock_t;
|
||||
|
||||
extern int lll_unlock_wake_cb (int *__futex) attribute_hidden;
|
||||
|
||||
/* Initializers for lock. */
|
||||
#define LLL_LOCK_INITIALIZER (0)
|
||||
#define LLL_LOCK_INITIALIZER_LOCKED (1)
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* low level locking for pthread library. Generic futex-using version.
|
||||
Copyright (C) 2003 Free Software Foundation, Inc.
|
||||
Copyright (C) 2003, 2007 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Paul Mackerras <paulus@au.ibm.com>, 2003.
|
||||
|
||||
@ -76,20 +76,8 @@ __lll_timedlock_wait (int *futex, const struct timespec *abstime)
|
||||
}
|
||||
|
||||
|
||||
/* These don't get included in libc.so */
|
||||
/* This function doesn't get included in libc.so */
|
||||
#ifdef IS_IN_libpthread
|
||||
int
|
||||
lll_unlock_wake_cb (int *futex)
|
||||
{
|
||||
int val = atomic_exchange_rel (futex, 0);
|
||||
|
||||
if (__builtin_expect (val > 1, 0))
|
||||
lll_futex_wake (futex, 1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
__lll_timedwait_tid (int *tidp, const struct timespec *abstime)
|
||||
{
|
||||
@ -127,5 +115,4 @@ __lll_timedwait_tid (int *tidp, const struct timespec *abstime)
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -263,8 +263,6 @@ typedef int lll_lock_t;
|
||||
#define LLL_LOCK_INITIALIZER (0)
|
||||
#define LLL_LOCK_INITIALIZER_LOCKED (1)
|
||||
|
||||
extern int lll_unlock_wake_cb (int *__futex) attribute_hidden;
|
||||
|
||||
/* The states of a lock are:
|
||||
0 - untaken
|
||||
1 - taken by one user
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 2003, 2004, 2006 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 2003, 2004, 2006, 2007 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Martin Schwidefsky <schwidefsky@de.ibm.com>, 2003.
|
||||
|
||||
@ -321,8 +321,6 @@ typedef int lll_lock_t;
|
||||
#define lll_unlock(futex) lll_mutex_unlock (futex)
|
||||
#define lll_islocked(futex) lll_mutex_islocked (futex)
|
||||
|
||||
extern int lll_unlock_wake_cb (int *__futex) attribute_hidden;
|
||||
|
||||
/* The states of a lock are:
|
||||
1 - untaken
|
||||
0 - taken by one user
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 2003, 2004, 2005, 2007 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
@ -186,34 +186,6 @@ __lll_mutex_timedlock_wait:
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef NOT_IN_libc
|
||||
.globl lll_unlock_wake_cb
|
||||
.type lll_unlock_wake_cb,@function
|
||||
.hidden lll_unlock_wake_cb
|
||||
.align 5
|
||||
cfi_startproc
|
||||
lll_unlock_wake_cb:
|
||||
DEC (@r4, r2)
|
||||
tst r2, r2
|
||||
bt 1f
|
||||
|
||||
mov #FUTEX_WAKE, r5
|
||||
mov #1, r6 /* Wake one thread. */
|
||||
mov #0, r7
|
||||
mov.l r7, @r4 /* Stores 0. */
|
||||
mov #SYS_futex, r3
|
||||
extu.b r3, r3
|
||||
trapa #0x14
|
||||
SYSCALL_INST_PAD
|
||||
|
||||
1:
|
||||
rts
|
||||
nop
|
||||
cfi_endproc
|
||||
.size lll_unlock_wake_cb,.-lll_unlock_wake_cb
|
||||
#endif
|
||||
|
||||
|
||||
.globl __lll_mutex_unlock_wake
|
||||
.type __lll_mutex_unlock_wake,@function
|
||||
.hidden __lll_mutex_unlock_wake
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 2003, 2004, 2006 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 2003, 2004, 2006, 2007 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
@ -344,9 +344,6 @@ typedef int lll_lock_t;
|
||||
} while (0)
|
||||
|
||||
|
||||
extern int lll_unlock_wake_cb (int *__futex) attribute_hidden;
|
||||
|
||||
|
||||
/* The states of a lock are:
|
||||
0 - untaken
|
||||
1 - taken by one user
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 2003, 2004, 2006 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 2003, 2004, 2006, 2007 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
|
||||
|
||||
@ -240,8 +240,6 @@ __lll_robust_mutex_timedlock (int *futex, const struct timespec *abstime,
|
||||
/* Type for lock object. */
|
||||
typedef int lll_lock_t;
|
||||
|
||||
extern int lll_unlock_wake_cb (int *__futex) attribute_hidden;
|
||||
|
||||
/* Initializers for lock. */
|
||||
#define LLL_LOCK_INITIALIZER (0)
|
||||
#define LLL_LOCK_INITIALIZER_LOCKED (1)
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* low level locking for pthread library. SPARC version.
|
||||
Copyright (C) 2003, 2006 Free Software Foundation, Inc.
|
||||
Copyright (C) 2003, 2006, 2007 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Paul Mackerras <paulus@au.ibm.com>, 2003.
|
||||
|
||||
@ -76,20 +76,8 @@ __lll_timedlock_wait (int *futex, const struct timespec *abstime)
|
||||
}
|
||||
|
||||
|
||||
/* These don't get included in libc.so */
|
||||
/* This function doesn't get included in libc.so */
|
||||
#ifdef IS_IN_libpthread
|
||||
int
|
||||
lll_unlock_wake_cb (int *futex)
|
||||
{
|
||||
int val = atomic_exchange_24_rel (futex, 0);
|
||||
|
||||
if (__builtin_expect (val > 1, 0))
|
||||
lll_futex_wake (futex, 1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
__lll_timedwait_tid (int *tidp, const struct timespec *abstime)
|
||||
{
|
||||
@ -127,5 +115,4 @@ __lll_timedwait_tid (int *tidp, const struct timespec *abstime)
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -220,26 +220,6 @@ __lll_mutex_timedlock_wait:
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef NOT_IN_libc
|
||||
.globl lll_unlock_wake_cb
|
||||
.type lll_unlock_wake_cb,@function
|
||||
.hidden lll_unlock_wake_cb
|
||||
.align 16
|
||||
lll_unlock_wake_cb:
|
||||
pushq %rsi
|
||||
pushq %rdx
|
||||
|
||||
LOCK
|
||||
addl $1, (%rdi)
|
||||
jng 1f
|
||||
|
||||
popq %rdx
|
||||
popq %rsi
|
||||
retq
|
||||
.size lll_unlock_wake_cb,.-lll_unlock_wake_cb
|
||||
#endif
|
||||
|
||||
|
||||
.globl __lll_mutex_unlock_wake
|
||||
.type __lll_mutex_unlock_wake,@function
|
||||
.hidden __lll_mutex_unlock_wake
|
||||
@ -253,8 +233,7 @@ __lll_mutex_unlock_wake:
|
||||
cfi_offset(%rsi, -16)
|
||||
cfi_offset(%rdx, -24)
|
||||
|
||||
/* NB: the label '1' is needed by lll_unlock_wake_cb. */
|
||||
1: movl $0, (%rdi)
|
||||
movl $0, (%rdi)
|
||||
LOAD_FUTEX_WAKE (%esi)
|
||||
movl $1, %edx /* Wake one thread. */
|
||||
movl $SYS_futex, %eax
|
||||
|
@ -455,9 +455,6 @@ typedef int lll_lock_t;
|
||||
#define LLL_LOCK_INITIALIZER_LOCKED (1)
|
||||
|
||||
|
||||
extern int lll_unlock_wake_cb (int *__futex) attribute_hidden;
|
||||
|
||||
|
||||
/* The states of a lock are:
|
||||
0 - untaken
|
||||
1 - taken by one user
|
||||
|
Loading…
Reference in New Issue
Block a user