[asterisk-commits] russell: branch russell/misdn_cc_channels r189343 - /team/russell/misdn_cc_ch...
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Mon Apr 20 10:22:36 CDT 2009
Author: russell
Date: Mon Apr 20 10:22:27 2009
New Revision: 189343
URL: http://svn.digium.com/svn-view/asterisk?view=rev&rev=189343
Log:
Don't use a custom lock for an ao2 object
Modified:
team/russell/misdn_cc_channels/channels/chan_misdn.c
Modified: team/russell/misdn_cc_channels/channels/chan_misdn.c
URL: http://svn.digium.com/svn-view/asterisk/team/russell/misdn_cc_channels/channels/chan_misdn.c?view=diff&rev=189343&r1=189342&r2=189343
==============================================================================
--- team/russell/misdn_cc_channels/channels/chan_misdn.c (original)
+++ team/russell/misdn_cc_channels/channels/chan_misdn.c Mon Apr 20 10:22:27 2009
@@ -155,8 +155,6 @@
struct misdn_cc_caller {
/*! \brief The channel that initialized call completion services */
struct ast_channel *chan;
- /*! \brief Lock to synchronize access to this datastore payload */
- ast_mutex_t lock;
};
static void misdn_cc_ds_destroy(void *data);
@@ -801,9 +799,9 @@
{
struct misdn_cc_caller *cc_caller = data;
- ast_mutex_lock(&cc_caller->lock);
+ ao2_lock(cc_caller);
cc_caller->chan = NULL;
- ast_mutex_unlock(&cc_caller->lock);
+ ao2_unlock(cc_caller);
ao2_ref(cc_caller, -1);
}
@@ -848,11 +846,13 @@
static void misdn_cc_set_peer_var(struct misdn_cc_caller *peer, const char *var,
const char *value)
{
- ast_mutex_lock(&peer->lock);
-
+ ao2_lock(peer);
+
+ /* XXX This nastiness can go away once ast_channel is ref counted! */
while (peer->chan && ast_channel_trylock(peer->chan)) {
- /* XXX This nastiness can go away once ast_channel is ref counted! */
- DEADLOCK_AVOIDANCE(&peer->lock);
+ ao2_unlock(peer);
+ sched_yield();
+ ao2_lock(peer);
}
if (peer->chan) {
@@ -860,7 +860,7 @@
ast_channel_unlock(peer->chan);
}
- ast_mutex_unlock(&peer->lock);
+ ao2_unlock(peer);
}
#endif /* defined(AST_MISDN_ENHANCEMENTS) */
@@ -10663,9 +10663,7 @@
#if defined(AST_MISDN_ENHANCEMENTS)
static void misdn_cc_caller_destroy(void *obj)
{
- struct misdn_cc_caller *cc_caller = obj;
-
- ast_mutex_destroy(&cc_caller->lock);
+ /* oh snap! */
}
#endif /* defined(AST_MISDN_ENHANCEMENTS) */
@@ -10677,8 +10675,6 @@
if (!(cc_caller = ao2_alloc(sizeof(*cc_caller), misdn_cc_caller_destroy))) {
return NULL;
}
-
- ast_mutex_init(&cc_caller->lock);
cc_caller->chan = chan;
More information about the asterisk-commits
mailing list