[asterisk-commits] rmudgett: branch rmudgett/ao2_enhancements r342221 - /team/rmudgett/ao2_enhan...

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Mon Oct 24 19:11:00 CDT 2011


Author: rmudgett
Date: Mon Oct 24 19:10:56 2011
New Revision: 342221

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=342221
Log:
Branch to add enhancements to ao2 objects.

Intending to add the following features

1) Locking option for ao2 objects:
 NOLOCK (object has no lock associated with it),
 recursive lock (current ao2 locking),
 RW lock (non-recursive)

The locking option is a requirement to allow any other kind of ao2
container because the current OBJ_NOLOCK search flag as used for Asterisk
10 ast_format codecs is incompatible.

2) Sorted ao2_container (Red-black tree implementation)

3) Dedicated node structure pool per container.  This is a proposed speed
enhancement to alloc/free container nodes since the node structures are
small.

4) Global ao2 object pointer reentrancy protection wrapper calls and
structure.  Currently you cannot replace or destroy a global ao2 object
because you cannot be guaranteed to get a reference to it.
struct ao2_global_obj {
    ast_rwlock_t lock;
    void *obj;
};
void *ao2_global_ref(struct ao2_global_obj *obj);
void *ao2_global_replace(struct ao2_global_obj *obj, void *new_obj);

Added:
    team/rmudgett/ao2_enhancements/
      - copied from r342220, trunk/




More information about the asterisk-commits mailing list