X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng-relayd%2Fviewer-stream.cpp;fp=src%2Fbin%2Flttng-relayd%2Fviewer-stream.cpp;h=9ca54e67ea49b7be778cf054579ca54004289bcb;hp=8bf0475045c4bb3a48a3b2040b24363994024d5c;hb=56047f5a23df5c2c583a102b8015bbec5a7da9f1;hpb=66cefebdc240cbae0bc79594305f509b0779fa98 diff --git a/src/bin/lttng-relayd/viewer-stream.cpp b/src/bin/lttng-relayd/viewer-stream.cpp index 8bf047504..9ca54e67e 100644 --- a/src/bin/lttng-relayd/viewer-stream.cpp +++ b/src/bin/lttng-relayd/viewer-stream.cpp @@ -14,6 +14,7 @@ #include #include #include +#include #include #include @@ -262,7 +263,7 @@ struct relay_viewer_stream *viewer_stream_get_by_id(uint64_t id) struct lttng_ht_iter iter; struct relay_viewer_stream *vstream = nullptr; - rcu_read_lock(); + lttng::urcu::read_lock_guard read_lock; lttng_ht_lookup(viewer_streams_ht, &id, &iter); node = lttng_ht_iter_get_node_u64(&iter); if (!node) { @@ -274,15 +275,13 @@ struct relay_viewer_stream *viewer_stream_get_by_id(uint64_t id) vstream = nullptr; } end: - rcu_read_unlock(); return vstream; } void viewer_stream_put(struct relay_viewer_stream *vstream) { - rcu_read_lock(); + lttng::urcu::read_lock_guard read_lock; urcu_ref_put(&vstream->ref, viewer_stream_release); - rcu_read_unlock(); } void viewer_stream_close_files(struct relay_viewer_stream *vstream) @@ -378,18 +377,22 @@ void print_viewer_streams() return; } - rcu_read_lock(); - cds_lfht_for_each_entry (viewer_streams_ht->ht, &iter.iter, vstream, stream_n.node) { - if (!viewer_stream_get(vstream)) { - continue; + { + lttng::urcu::read_lock_guard read_lock; + + cds_lfht_for_each_entry ( + viewer_streams_ht->ht, &iter.iter, vstream, stream_n.node) { + if (!viewer_stream_get(vstream)) { + continue; + } + DBG("vstream %p refcount %ld stream %" PRIu64 " trace %" PRIu64 + " session %" PRIu64, + vstream, + vstream->ref.refcount, + vstream->stream->stream_handle, + vstream->stream->trace->id, + vstream->stream->trace->session->id); + viewer_stream_put(vstream); } - DBG("vstream %p refcount %ld stream %" PRIu64 " trace %" PRIu64 " session %" PRIu64, - vstream, - vstream->ref.refcount, - vstream->stream->stream_handle, - vstream->stream->trace->id, - vstream->stream->trace->session->id); - viewer_stream_put(vstream); } - rcu_read_unlock(); }