struct lttng_ht_iter iter;
struct ltt_ust_channel *uchan;
+ rcu_read_lock();
cds_lfht_for_each_entry(session->ust_session->domain_global.channels->ht,
&iter.iter, uchan, node.node) {
strncpy(channels[i].name, uchan->name, LTTNG_SYMBOL_NAME_LEN);
}
i++;
}
+ rcu_read_unlock();
break;
}
default:
assert(session);
+ rcu_read_lock();
+
if (session->consumer_fds_sent == 0 && session->consumer != NULL) {
cds_lfht_for_each_entry(session->consumer->socks->ht, &iter.iter,
socket, node.node) {
}
error:
+ rcu_read_unlock();
return ret;
}
DBG2("Setting relayd for session %s", session->name);
+ rcu_read_lock();
+
if (usess && usess->consumer && usess->consumer->type == CONSUMER_DST_NET
&& usess->consumer->enabled) {
/* For each consumer socket, send relayd sockets */
}
error:
+ rcu_read_unlock();
return ret;
}
goto error;
}
+ rcu_read_lock();
+
/* Lookup context before adding it */
lttng_ht_lookup(uchan->ctx, (void *)((unsigned long)uctx->ctx.ctx), &iter);
uctx_node = lttng_ht_iter_get_node_ulong(&iter);
if (uctx_node != NULL) {
ret = -EEXIST;
+ rcu_read_unlock();
goto error;
}
/* Add ltt UST context node to ltt UST channel */
lttng_ht_add_unique_ulong(uchan->ctx, &uctx->node);
+ rcu_read_unlock();
DBG("Context UST %d added to channel %s", uctx->ctx.ctx, uchan->name);
/* Add ctx to channel */
ret = add_uctx_to_channel(usess, domain, uchan, ctx);
} else {
+ rcu_read_lock();
/* Add ctx all events, all channels */
cds_lfht_for_each_entry(chan_ht->ht, &iter.iter, uchan, node.node) {
ret = add_uctx_to_channel(usess, domain, uchan, ctx);
continue;
}
}
+ rcu_read_unlock();
}
switch (ret) {
struct lttng_ht_iter iter;
struct consumer_socket *socket;
-
+ rcu_read_lock();
cds_lfht_for_each_entry(ksess->consumer->socks->ht,
&iter.iter, socket, node.node) {
/* Code flow error */
channel, ksess);
pthread_mutex_unlock(socket->lock);
if (ret < 0) {
+ rcu_read_unlock();
goto error;
}
}
+ rcu_read_unlock();
}
goto error;
}