[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(<t_transport_mutex);
cds_list_add_tail(&transport->node, <t_transport_list);
- ltt_unlock_traces();
+ pthread_mutex_unlock(<t_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(<t_transport_mutex);
cds_list_del(&transport->node);
- ltt_unlock_traces();
+ pthread_mutex_unlock(<t_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(<t_transport_mutex);
cds_list_for_each_entry(tran_iter, <t_transport_list, node) {
if (!strcmp(tran_iter->name, trace_type)) {
transport = tran_iter;
break;
}
}
+ pthread_mutex_unlock(<t_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