Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Leap:42.1:Staging:C
glibc
pthread-mutex-trylock-elision.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File pthread-mutex-trylock-elision.patch of Package glibc
[PATCH] Properly handle forced elision in pthread_mutex_trylock BZ #16657 * pthread_mutex_trylock.c (__pthread_mutex_trylock): Use FORCE_ELISION instead of DO_ELISION. * sysdeps/unix/sysv/linux/x86/force-elision.h (DO_ELISION): Remove. --- nptl/pthread_mutex_trylock.c | 7 +++---- nptl/sysdeps/unix/sysv/linux/x86/force-elision.h | 5 ----- 2 files changed, 3 insertions(+), 9 deletions(-) Index: glibc-2.19/nptl/pthread_mutex_trylock.c =================================================================== --- glibc-2.19.orig/nptl/pthread_mutex_trylock.c +++ glibc-2.19/nptl/pthread_mutex_trylock.c @@ -26,8 +26,8 @@ #define lll_trylock_elision(a,t) lll_trylock(a) #endif -#ifndef DO_ELISION -#define DO_ELISION(m) 0 +#ifndef FORCE_ELISION +#define FORCE_ELISION(m, s) #endif /* We don't force elision in trylock, because this can lead to inconsistent @@ -77,8 +77,7 @@ __pthread_mutex_trylock (mutex) return 0; case PTHREAD_MUTEX_TIMED_NP: - if (DO_ELISION (mutex)) - goto elision; + FORCE_ELISION (mutex, goto elision); /*FALL THROUGH*/ case PTHREAD_MUTEX_ADAPTIVE_NP: case PTHREAD_MUTEX_ERRORCHECK_NP: Index: glibc-2.19/nptl/sysdeps/unix/sysv/linux/x86/force-elision.h =================================================================== --- glibc-2.19.orig/nptl/sysdeps/unix/sysv/linux/x86/force-elision.h +++ glibc-2.19/nptl/sysdeps/unix/sysv/linux/x86/force-elision.h @@ -16,11 +16,6 @@ License along with the GNU C Library; if not, see <http://www.gnu.org/licenses/>. */ -/* Check for elision on this lock without upgrading. */ -#define DO_ELISION(m) \ - (__pthread_force_elision \ - && (m->__data.__kind & PTHREAD_MUTEX_NO_ELISION_NP) == 0) \ - /* Automatically enable elision for existing user lock kinds. */ #define FORCE_ELISION(m, s) \ if (__pthread_force_elision \
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor