This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH 03/10] Add external interface changes: new lock types forpthread_mutex_t


> (c) Add specific pthread_mutexattr_*_np() functions to enable
>     or disable lock elision with the attribute used to create
>     the mutex. Add a new pthread's section in the manual to
>     describe these as "reqeust that lock elision be used if
>     available" etc. etc.
> 
>     I suggest creating a generic interface:
>     pthread_mutexattr_setparam_np(int parameter, int value);
>     pthread_mutexattr_getparam_np(int parameter, int value);
> 
>     Where paramter is one of:
>     PTHREAD_MUTEX_ELISION (your new bit)
>     PTHREAD_MUTEX_SHARED (the existing bit 31 for pshared)

So I had it all coded up and tested, but for the PTHREAD_MUTEX_INIT_NP
it's needed to support or'ing flags anyways:

lock = PTHREAD_MUTEX_INIT_NP(PTHREAD_MUTEX_TIMED_NP|PTHREAD_MUTEX_ELISION_NP);
lock = PTHREAD_MUTEX_INIT_NP(PTHREAD_MUTEX_TIMED_NP|PTHREAD_MUTEX_NO_ELISION_NP);
lock = PTHREAD_MUTEX_INIT_NP(PTHREAD_MUTEX_TIMED_NP|PTHREAD_MUTEX_PSHARED_NP);

but with that can as well or in pthread_mutexattr_settype() too:

pthread_mutexattr_settype(&ma, PTHREAD_MUTEX_TIMED_NP|PTHREAD_MUTEX_ELISION_NP)

and that's more consistent overall and the same everywhere. Also works for PSHARED.

It also avoids adding new functions, which is a pain for binary compatibility.
With that I'm dropping the pthread_mutexattr_setelision_np interfaces.

-Andi


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]