[asterisk-dev] [Code Review] Astobj2 locking enhancement

Kevin Fleming reviewboard at asterisk.org
Fri Feb 24 17:20:20 CST 2012


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/1554/#review5639
-----------------------------------------------------------



/trunk/include/asterisk/astobj2.h
<https://reviewboard.asterisk.org/r/1554/#comment10292>

    Please do a global search/replace of 'Ao2' with 'ao2'. :-)



/trunk/include/asterisk/astobj2.h
<https://reviewboard.asterisk.org/r/1554/#comment10293>

    blob



/trunk/include/asterisk/astobj2.h
<https://reviewboard.asterisk.org/r/1554/#comment10294>

    blob



/trunk/include/asterisk/astobj2.h
<https://reviewboard.asterisk.org/r/1554/#comment10295>

    I'm not sure I follow this; if a rdlock is promoted to a wrlock, it can't be demoted to a rdlock without releasing it first. Is that the intention here?



/trunk/include/asterisk/astobj2.h
<https://reviewboard.asterisk.org/r/1554/#comment10296>

    Same comment as above.



/trunk/main/astobj2.c
<https://reviewboard.asterisk.org/r/1554/#comment10298>

    'the possible RWLOCK' seems like an odd way to describe this. "Attempt to adjust an object's lock to the requested level", with a comment in the body about how the adjustment may differ based on whether the lock is a mutex or an rwlock would probably be more understandable.


- Kevin


On Oct. 31, 2011, 3:01 p.m., rmudgett wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviewboard.asterisk.org/r/1554/
> -----------------------------------------------------------
> 
> (Updated Oct. 31, 2011, 3:01 p.m.)
> 
> 
> Review request for Asterisk Developers and David Vossel.
> 
> 
> Summary
> -------
> 
> Add the ability to specify what kind of locking an ao2 object has when it is allocated.
> The locking could be one of: MUTEX, RWLOCK, or none.
> 
> New API:
> 
> ao2_t_alloc_options()
> ao2_alloc_options()
> ao2_t_container_alloc_options()
> ao2_container_alloc_options()
> 
> ao2_rdlock()
> ao2_wrlock()
> ao2_tryrdlock()
> ao2_trywrlock()
> 
> The OBJ_NOLOCK and AO2_ITERATOR_DONTLOCK flags have a slight meaning 
> change.  They no longer mean that the object is protected by an external 
> mechanism.  They mean the lock associated with the object has already been 
> manually obtained by one of the ao2_lock calls.  This change is necessary 
> for RWLOCK support since they are not reentrant.  Also an operation on an 
> ao2 container may require promoting a read lock to a write lock by 
> releasing the already held read lock to re-acquire as a write lock.  
> 
> 
> The changes to format.c and format_cap.c are taking advantange of the new 
> ao2 locking options to simplify the use of the format capabilities 
> containers.  
> 
> 
> Diffs
> -----
> 
>   /trunk/include/asterisk/lock.h 342867 
>   /trunk/main/astobj2.c 342867 
>   /trunk/main/format.c 342867 
>   /trunk/main/format_cap.c 342867 
>   /trunk/include/asterisk/astobj2.h 342867 
> 
> Diff: https://reviewboard.asterisk.org/r/1554/diff
> 
> 
> Testing
> -------
> 
> Ran the ao2 unit tests.
> 
> 
> Thanks,
> 
> rmudgett
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20120224/7ca3f5f4/attachment.htm>


More information about the asterisk-dev mailing list