[ltt-dev] [UST PATCH] libust: New transport mutex

Nils Carlson nils.carlson at ericsson.com
Tue Mar 15 09:46:50 EDT 2011


Make the locking around the transport list more intelligent, give
it its own mutex.

Signed-off-by: Nils Carlson <nils.carlson at ericsson.com>
---
 libust/tracer.c |   13 ++++++++-----
 1 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/libust/tracer.c b/libust/tracer.c
index 100dec0..ceb5b74 100644
--- a/libust/tracer.c
+++ b/libust/tracer.c
@@ -182,7 +182,7 @@ static enum ltt_channels get_channel_type_from_name(const char *name)
 //ust// }
 
 static CDS_LIST_HEAD(ltt_transport_list);
-
+static DEFINE_MUTEX(ltt_transport_mutex);
 /**
  * ltt_transport_register - LTT transport registration
  * @transport: transport structure
@@ -204,9 +204,9 @@ void ltt_transport_register(struct ltt_transport *transport)
 	 */
 //ust//	vmalloc_sync_all();
 
-	ltt_lock_traces();
+	pthread_mutex_lock(&ltt_transport_mutex);
 	cds_list_add_tail(&transport->node, &ltt_transport_list);
-	ltt_unlock_traces();
+	pthread_mutex_unlock(&ltt_transport_mutex);
 }
 
 /**
@@ -215,9 +215,9 @@ void ltt_transport_register(struct ltt_transport *transport)
  */
 void ltt_transport_unregister(struct ltt_transport *transport)
 {
-	ltt_lock_traces();
+	pthread_mutex_lock(&ltt_transport_mutex);
 	cds_list_del(&transport->node);
-	ltt_unlock_traces();
+	pthread_mutex_unlock(&ltt_transport_mutex);
 }
 
 static inline int is_channel_overwrite(enum ltt_channels chan,
@@ -458,12 +458,15 @@ int ltt_trace_set_type(const char *trace_name, const char *trace_type)
 		goto traces_error;
 	}
 
+	pthread_mutex_lock(&ltt_transport_mutex);
 	cds_list_for_each_entry(tran_iter, &ltt_transport_list, node) {
 		if (!strcmp(tran_iter->name, trace_type)) {
 			transport = tran_iter;
 			break;
 		}
 	}
+	pthread_mutex_unlock(&ltt_transport_mutex);
+
 	if (!transport) {
 		ERR("Transport %s is not present", trace_type);
 		err = -EINVAL;
-- 
1.7.1





More information about the lttng-dev mailing list