[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