X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Fevent.c;h=08c7d4339f009b120683dfb2de44b310cf7dd0cc;hb=7c1d2758d663ac5f119eae6849e50b56546a0c48;hp=0efdc9253d59adc98da8508c8909b9a6d9e58f06;hpb=d0ae4ea864f84fa2456563abb20fe42e5cc29625;p=lttng-tools.git diff --git a/src/bin/lttng-sessiond/event.c b/src/bin/lttng-sessiond/event.c index 0efdc9253..08c7d4339 100644 --- a/src/bin/lttng-sessiond/event.c +++ b/src/bin/lttng-sessiond/event.c @@ -33,6 +33,7 @@ #include "ust-app.h" #include "trace-kernel.h" #include "trace-ust.h" +#include "agent.h" /* * Add unique UST event based on the event name, filter bytecode and loglevel. @@ -129,7 +130,8 @@ int event_kernel_disable_event_all(struct ltt_kernel_channel *kchan) * We own filter_expression and filter. */ int event_kernel_enable_event(struct ltt_kernel_channel *kchan, - struct lttng_event *event) + struct lttng_event *event, char *filter_expression, + struct lttng_filter_bytecode *filter) { int ret; struct ltt_kernel_event *kevent; @@ -137,10 +139,14 @@ int event_kernel_enable_event(struct ltt_kernel_channel *kchan, assert(kchan); assert(event); - kevent = trace_kernel_get_event_by_name(event->name, kchan, - event->type); + kevent = trace_kernel_find_event(event->name, kchan, + event->type, filter); if (kevent == NULL) { - ret = kernel_create_event(event, kchan); + ret = kernel_create_event(event, kchan, + filter_expression, filter); + /* We have passed ownership */ + filter_expression = NULL; + filter = NULL; if (ret < 0) { switch (-ret) { case EEXIST: @@ -169,6 +175,8 @@ int event_kernel_enable_event(struct ltt_kernel_channel *kchan, ret = LTTNG_OK; end: + free(filter_expression); + free(filter); return ret; }