[PING][PATCH] Correct mutex type check for disable lock elision via pthread_mutexattr_settype call
Stefan Liebler
stli@linux.vnet.ibm.com
Wed Apr 23 11:35:00 GMT 2014
ping
On 04/14/2014 09:06 AM, Stefan Liebler wrote:
> 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