#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>
cds_list_for_each_entry (kevent, &kchan->events_list.head, list) {
if (type != LTTNG_EVENT_ALL && kevent->type != type)
continue;
- if (event_name != NULL && strcmp(event_name, kevent->event->name)) {
+ if (event_name != nullptr && strcmp(event_name, kevent->event->name) != 0) {
continue;
}
found++;
event_name ? event_name : "NULL",
type);
- if (event_name != NULL && !found) {
+ if (event_name != nullptr && !found) {
ret = LTTNG_ERR_NO_EVENT;
} else {
ret = error ? LTTNG_ERR_KERN_DISABLE_FAIL : LTTNG_OK;
LTTNG_ASSERT(event);
kevent = trace_kernel_find_event(event->name, kchan, event->type, filter);
- if (kevent == NULL) {
+ if (kevent == nullptr) {
ret = kernel_create_event(event, kchan, filter_expression, filter);
/* We have passed ownership */
- filter_expression = NULL;
- filter = NULL;
+ filter_expression = nullptr;
+ filter = nullptr;
if (ret) {
goto end;
}
- } else if (kevent->enabled == 0) {
+ } else if (!kevent->enabled) {
ret = kernel_enable_event(kevent);
if (ret < 0) {
ret = LTTNG_ERR_KERN_ENABLE_FAIL;
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 = trace_ust_create_event(
event, filter_expression, filter, exclusion, internal_event, &uevent);
/* We have passed ownership */
- filter_expression = NULL;
- filter = NULL;
- exclusion = NULL;
+ filter_expression = nullptr;
+ filter = nullptr;
+ exclusion = nullptr;
if (ret != LTTNG_OK) {
goto end;
}
goto end;
}
- uevent->enabled = 1;
+ uevent->enabled = true;
if (to_create) {
/* Add ltt ust event to channel */
add_unique_ust_event(uchan->events, uevent);
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
event_name,
&iter.iter);
node = lttng_ht_iter_get_node_str(&iter);
- if (node == NULL) {
+ if (node == nullptr) {
DBG2("Trace UST event NOT found by name %s", event_name);
ret = LTTNG_ERR_UST_EVENT_NOT_FOUND;
goto error;
uevent = lttng::utils::container_of(node, <t_ust_event::node);
LTTNG_ASSERT(uevent);
- if (uevent->enabled == 0) {
+ if (!uevent->enabled) {
/* It's already disabled so everything is OK */
goto next;
}
- uevent->enabled = 0;
+ uevent->enabled = false;
DBG2("Event UST %s disabled in channel %s", uevent->attr.name, uchan->name);
if (!usess->active) {
ret = LTTNG_OK;
error:
- rcu_read_unlock();
return ret;
}
{
int ret, i, size, error = 0;
struct lttng_ht_iter iter;
- struct ltt_ust_event *uevent = NULL;
- struct lttng_event *events = NULL;
+ struct ltt_ust_event *uevent = nullptr;
+ struct lttng_event *events = nullptr;
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 == 1) {
- 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();
}
/*
struct agent *agt)
{
int ret = LTTNG_OK;
- char *provider_name = NULL, *ctx_name = NULL;
+ char *provider_name = nullptr, *ctx_name = nullptr;
struct bytecode_symbol_iterator *it = bytecode_symbol_iterator_create(bytecode);
if (!it) {
free(provider_name);
free(ctx_name);
- provider_name = ctx_name = NULL;
+ provider_name = ctx_name = nullptr;
} while (bytecode_symbol_iterator_next(it) == 0);
end:
free(provider_name);
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) {
ret = LTTNG_ERR_NOMEM;
goto error;
}
- filter = NULL;
- filter_expression = NULL;
+ filter = nullptr;
+ filter_expression = nullptr;
created = 1;
LTTNG_ASSERT(!AGENT_EVENT_IS_ENABLED(aevent));
}
agent_destroy_event(aevent);
}
end:
- rcu_read_unlock();
free(filter);
free(filter_expression);
return ret;
const struct lttng_condition *condition;
const struct lttng_event_rule *rule;
const char *filter_expression;
- char *filter_expression_copy = NULL;
+ char *filter_expression_copy = nullptr;
const struct lttng_bytecode *filter_bytecode;
- struct lttng_bytecode *filter_bytecode_copy = NULL;
- struct lttng_event *event = NULL;
+ struct lttng_bytecode *filter_bytecode_copy = nullptr;
+ struct lttng_event *event = nullptr;
uid_t trigger_owner_uid = 0;
const char *trigger_name;
ret = agent_enable(agt, event, filter_bytecode_copy, filter_expression_copy);
/* Ownership was passed even in case of error. */
- filter_expression_copy = NULL;
- filter_bytecode_copy = NULL;
+ filter_expression_copy = nullptr;
+ filter_bytecode_copy = nullptr;
end:
free(filter_expression_copy);
*/
const char *event_get_default_agent_ust_name(enum lttng_domain_type domain)
{
- const char *default_event_name = NULL;
+ const char *default_event_name = nullptr;
switch (domain) {
case LTTNG_DOMAIN_LOG4J:
struct agent_event *aevent)
{
int ret;
- struct ltt_ust_event *uevent = NULL;
- struct ltt_ust_channel *uchan = NULL;
+ struct ltt_ust_event *uevent = nullptr;
+ struct ltt_ust_channel *uchan = nullptr;
const char *ust_event_name, *ust_channel_name;
LTTNG_ASSERT(agt);
aevent->filter,
LTTNG_UST_ABI_LOGLEVEL_ALL,
-1,
- NULL);
+ nullptr);
/* If the agent event exists, it must be available on the UST side. */
LTTNG_ASSERT(uevent);
* Flag event that it's disabled so the shadow copy on the ust app side
* will disable it if an application shows up.
*/
- uevent->enabled = 0;
+ uevent->enabled = false;
ret = agent_disable_event(aevent, agt->domain);
if (ret != LTTNG_OK) {
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 == NULL) {
+ if (aevent == nullptr) {
DBG2("Event agent NOT found by trigger %" PRIu64,
lttng_trigger_get_tracer_token(trigger));
ret = LTTNG_ERR_UST_EVENT_NOT_FOUND;
}
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);
- if (node == NULL) {
+ if (node == nullptr) {
DBG2("Event agent NOT found by name %s", event_name);
ret = LTTNG_ERR_UST_EVENT_NOT_FOUND;
goto end;
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;
}