all mutexes -> read-write locks?

Julian Elischer julian at elischer.org
Mon Jun 2 07:11:03 UTC 2008


Daniel Eischen wrote:
> On Sun, 1 Jun 2008, Julian Elischer wrote:
> 
>> Daniel Eischen wrote:
>>> On Sun, 1 Jun 2008, Ed Schouten wrote:
>>>
>>>> Hello Julian,
>>>>
>>>> * Julian Elischer <julian at elischer.org> wrote:
>>>>> it has been mentioned several times that through the evolution of the
>>>>> locking primitives it has come to be that mutexes and exclusively
>>>>> acquired reader-writer locks are almost the same in terms of  overhead
>>>>> and that it might be a good move to define all mutexes to be
>>>>> actually just that.
>>>>>
>>>>> this would allow people to slowly go through the system, catching low
>>>>> hanging fruit by converting some of the mutex operations to reader
>>>>> acquisitions wherever a writer is not required, thus reducing general
>>>>> system contention.
>>>>>
>>>>> Is there any thought on this?  Last I heard jhb had confirmed that it
>>>>> was feasible..
>>>>
>>>> If this is going to be done, could we have mtx_* macro's pointing to 
>>>> the
>>>> proper read/write ops? I know, it's just names, but I think most novice
>>>> FreeBSD kernel hackers will almost instantaneously figure out what 
>>>> 'mtx'
>>>> stands for.
>>>
>>> Yes, mutex (mtx) is known very well.
>>>
>>> I don't think changing all mutex operations to rdlock operations
>>> is wise.  They are two different animals, regardless of their
>>> implementation.  Mutexes are very commonly used in device drivers,
>>> at least outside of FreeBSD.  And just because our current
>>> implementation of them are the same as rwlocks doesn't mean that
>>> it will always be the same in the future.
>>>
>>
>> so let's imagine that mutexes dissappear...
>> :-)
> 
> I'd rather not.  What do you have against them?  

People use them without thinking about whether they need to be so
strict.

> Their API is simple
> enough to use.  If there is code that really wants to have multiple
> readers, by all means change it to use rwlocks.


yes but we have a lot of code that uses mutexes.. changing it would 
allow a slow transition to using rw locks.

> 
> Take a look at Solaris kernel mutexes and see how you can init
> a mutex that is to be used in an interrupt handler.

how does that help making more things use read locking?

> 



More information about the freebsd-arch mailing list