[ltt-dev] [UST PATCH] libust: New transport mutex v2
Nils Carlson
nils.carlson at ericsson.com
Wed Mar 16 04:55:33 EDT 2011
Changes since v1:
Add a nesting comment
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 | 14 +++++++++-----
1 files changed, 9 insertions(+), 5 deletions(-)
diff --git a/libust/tracer.c b/libust/tracer.c
index 100dec0..ffcc2e7 100644
--- a/libust/tracer.c
+++ b/libust/tracer.c
@@ -182,7 +182,8 @@ static enum ltt_channels get_channel_type_from_name(const char *name)
//ust// }
static CDS_LIST_HEAD(ltt_transport_list);
-
+/* transport mutex, nests inside traces mutex (ltt_lock_traces) */
+static DEFINE_MUTEX(ltt_transport_mutex);
/**
* ltt_transport_register - LTT transport registration
* @transport: transport structure
@@ -204,9 +205,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 +216,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 +459,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