#include <common/error.hpp>
#include <common/filter.hpp>
#include <common/sessiond-comm/sessiond-comm.hpp>
+#include <common/urcu.hpp>
#include <lttng/condition/condition.h>
#include <lttng/condition/event-rule-matches.h>
LTTNG_ASSERT(uchan);
LTTNG_ASSERT(event);
- rcu_read_lock();
+ lttng::urcu::read_lock_guard read_lock;
uevent = trace_ust_find_event(uchan->events,
event->name,
ret = LTTNG_OK;
end:
- rcu_read_unlock();
free(filter_expression);
free(filter);
free(exclusion);
ht = uchan->events;
- rcu_read_lock();
+ lttng::urcu::read_lock_guard read_lock;
/*
* We use a custom lookup since we need the iterator for the next_duplicate
ret = LTTNG_OK;
error:
- rcu_read_unlock();
return ret;
}
LTTNG_ASSERT(usess);
LTTNG_ASSERT(uchan);
- rcu_read_lock();
-
/* Disabling existing events */
- cds_lfht_for_each_entry (uchan->events->ht, &iter.iter, uevent, node.node) {
- if (uevent->enabled) {
- ret = event_ust_disable_tracepoint(usess, uchan, uevent->attr.name);
- if (ret < 0) {
- error = LTTNG_ERR_UST_DISABLE_FAIL;
- continue;
+ {
+ lttng::urcu::read_lock_guard read_lock;
+
+ cds_lfht_for_each_entry (uchan->events->ht, &iter.iter, uevent, node.node) {
+ if (uevent->enabled) {
+ ret = event_ust_disable_tracepoint(usess, uchan, uevent->attr.name);
+ if (ret < 0) {
+ error = LTTNG_ERR_UST_DISABLE_FAIL;
+ continue;
+ }
}
}
}
ret = error ? error : LTTNG_OK;
error:
- rcu_read_unlock();
free(events);
return ret;
}
struct agent_event *aevent;
struct lttng_ht_iter iter;
- /* Flag every event as enabled. */
- rcu_read_lock();
- cds_lfht_for_each_entry (agt->events->ht, &iter.iter, aevent, node.node) {
- aevent->enabled_count++;
+ {
+ /* Flag every event as enabled. */
+ lttng::urcu::read_lock_guard read_lock;
+
+ cds_lfht_for_each_entry (agt->events->ht, &iter.iter, aevent, node.node) {
+ aevent->enabled_count++;
+ }
}
- rcu_read_unlock();
}
/*
LTTNG_ASSERT(event);
LTTNG_ASSERT(agt);
- rcu_read_lock();
+ lttng::urcu::read_lock_guard read_lock;
aevent = agent_find_event(
event->name, event->loglevel_type, event->loglevel, filter_expression, agt);
if (!aevent) {
agent_destroy_event(aevent);
}
end:
- rcu_read_unlock();
free(filter);
free(filter_expression);
return ret;
DBG("Event agent disabling for trigger %" PRIu64, lttng_trigger_get_tracer_token(trigger));
- rcu_read_lock();
+ lttng::urcu::read_lock_guard read_lock;
aevent = agent_find_event_by_trigger(trigger, agt);
if (aevent == nullptr) {
}
end:
- rcu_read_unlock();
return ret;
}
DBG("Event agent disabling %s (all loglevels) for session %" PRIu64, event_name, usess->id);
- rcu_read_lock();
+ lttng::urcu::read_lock_guard read_lock;
agent_find_events_by_name(event_name, agt, &iter);
node = lttng_ht_iter_get_node_str(&iter);
node = lttng_ht_iter_get_node_str(&iter);
} while (node);
end:
- rcu_read_unlock();
return ret;
}
/*
}
/* Disable every event. */
- rcu_read_lock();
- cds_lfht_for_each_entry (agt->events->ht, &iter.iter, aevent, node.node) {
- if (!AGENT_EVENT_IS_ENABLED(aevent)) {
- continue;
- }
+ {
+ lttng::urcu::read_lock_guard read_lock;
- ret = event_agent_disable(usess, agt, aevent->name);
- if (ret != LTTNG_OK) {
- goto error_unlock;
+ cds_lfht_for_each_entry (agt->events->ht, &iter.iter, aevent, node.node) {
+ if (!AGENT_EVENT_IS_ENABLED(aevent)) {
+ continue;
+ }
+
+ ret = event_agent_disable(usess, agt, aevent->name);
+ if (ret != LTTNG_OK) {
+ goto error_unlock;
+ }
}
}
+
ret = LTTNG_OK;
error_unlock:
- rcu_read_unlock();
error:
return ret;
}