[PING][PATCH] Correct mutex type check for disable lock elision via pthread_mutexattr_settype call
Stefan Liebler
stli@linux.vnet.ibm.com
Mon Apr 14 07:10:00 GMT 2014
ping.
ok to commit?
On 04/08/2014 02:08 PM, Stefan Liebler wrote:
> ping!
> On 04/01/2014 10:29 AM, Stefan Liebler wrote:
>> Hi,
>>
>> if glibc is build with --enable-lock-elision=yes,
>> all default mutexes are elided (only for supported architectures).
>> Someone can disable the elision for one specific mutex with
>> a call to pthread_mutexattr_settype.
>> Currently you can specify either PTHREAD_MUTEX_NORMAL or
>> PTHREAD_MUTEX_DEFAULT, because they are both defined to 0.
>> The function checks for type PTHREAD_MUTEX_DEFAULT
>> and then disables elision.
>>
>> For correctness, the function should check against PTHREAD_MUTEX_NORMAL!
>> According to POSIX, PTHREAD_MUTEX_NORMAL shall deadlock if a thread
>> tries to relock a mutex without first unlocking it.
>> In case of PTHREAD_MUTEX_DEFAULT, the behavior is undefined.
>> Thus the mutex can be elided with PTHREAD_MUTEX_DEFAULT, but not with
>> PTHREAD_MUTEX_NORMAL.
>> The same can be read in the lock elision implementation guidelines
>> (https://sourceware.org/glibc/wiki/LockElisionGuide).
>>
>> Bye.
>>
>> ---
>> 2014-04-01 Stefan Liebler <stli@linux.vnet.ibm.com>
>>
>> * nptl/pthread_mutexattr_settype.c
>> (__pthread_mutexattr_settype):
>> Disable lock elision for PTHREAD_MUTEX_NORMAL.
>> ---
>
>
>
More information about the Libc-alpha
mailing list