X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Fsave.c;h=3df1f2828f17d275efcc69930030d1bd4cd25936;hp=b8fe25ce4691d8fbc4ac8c2e413bb80c9e2373b0;hb=890d8fe47755c3bad936389cf48ffa141cff41c9;hpb=e8fcabef14e1e2ce8d159c68c5585931df1216b4 diff --git a/src/bin/lttng-sessiond/save.c b/src/bin/lttng-sessiond/save.c index b8fe25ce4..3df1f2828 100644 --- a/src/bin/lttng-sessiond/save.c +++ b/src/bin/lttng-sessiond/save.c @@ -15,7 +15,6 @@ * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#define _GNU_SOURCE #define _LGPL_SOURCE #include #include @@ -742,16 +741,37 @@ end: } static -void init_ust_event_from_agent_event(struct ltt_ust_event *ust_event, +int init_ust_event_from_agent_event(struct ltt_ust_event *ust_event, struct agent_event *agent_event) { + int ret = 0; + enum lttng_ust_loglevel_type ust_loglevel_type; + ust_event->enabled = agent_event->enabled; ust_event->attr.instrumentation = LTTNG_UST_TRACEPOINT; strncpy(ust_event->attr.name, agent_event->name, LTTNG_SYMBOL_NAME_LEN); - ust_event->attr.loglevel_type = agent_event->loglevel_type; - ust_event->attr.loglevel = agent_event->loglevel; + switch (agent_event->loglevel_type) { + case LTTNG_EVENT_LOGLEVEL_ALL: + ust_loglevel_type = LTTNG_UST_LOGLEVEL_ALL; + break; + case LTTNG_EVENT_LOGLEVEL_SINGLE: + ust_loglevel_type = LTTNG_UST_LOGLEVEL_SINGLE; + break; + case LTTNG_EVENT_LOGLEVEL_RANGE: + ust_loglevel_type = LTTNG_UST_LOGLEVEL_RANGE; + break; + default: + ERR("Invalid agent_event loglevel_type."); + ret = -1; + goto end; + } + + ust_event->attr.loglevel_type = ust_loglevel_type; + ust_event->attr.loglevel = agent_event->loglevel_value; ust_event->filter_expression = agent_event->filter_expression; ust_event->exclusion = agent_event->exclusion; +end: + return ret; } static @@ -784,7 +804,11 @@ int save_agent_events(struct config_writer *writer, * (and one could wonder why they don't reuse the same * structures...). */ - init_ust_event_from_agent_event(&fake_event, agent_event); + ret = init_ust_event_from_agent_event(&fake_event, agent_event); + if (ret) { + rcu_read_unlock(); + goto end; + } ret = save_ust_event(writer, &fake_event); if (ret) { rcu_read_unlock();