X-Git-Url: http://git.efficios.com/?p=lttng-tools.git;a=blobdiff_plain;f=ltt-sessiond%2Fkernel-ctl.c;h=02e87e3401b88d1e6f81b999dd71e6f81a2d4438;hp=5d70296ea82008669c6710c57a19024c4620f051;hb=f34daff7d0139d162e949f1b4fbb4cd003746b15;hpb=1b686c3f1859c4d5929e234c6e792c2bcab4cc8e diff --git a/ltt-sessiond/kernel-ctl.c b/ltt-sessiond/kernel-ctl.c index 5d70296ea..02e87e340 100644 --- a/ltt-sessiond/kernel-ctl.c +++ b/ltt-sessiond/kernel-ctl.c @@ -19,6 +19,7 @@ #include #include #include +#include #include "ltt-sessiond.h" #include "libkernelctl.h" @@ -101,3 +102,42 @@ int kernel_create_channel(struct command_ctx *cmd_ctx) error: return ret; } + +/* + * kernel_enable_event + * + * Enable kernel event. + */ +int kernel_enable_event(struct ltt_kernel_channel *channel, char *name) +{ + int ret; + struct ltt_kernel_event *event; + struct lttng_kernel_event *lke; + + event = malloc(sizeof(struct ltt_kernel_event)); + lke = malloc(sizeof(struct lttng_kernel_event)); + + if (event == NULL || lke == NULL) { + perror("kernel enable event malloc"); + ret = -errno; + goto error; + } + + /* Setting up a kernel event */ + strncpy(lke->name, name, LTTNG_SYM_NAME_LEN); + lke->instrumentation = LTTNG_KERNEL_TRACEPOINTS; + event->event = lke; + + ret = kernctl_create_event(channel->fd, lke); + if (ret < 0) { + goto error; + } + + /* Add event to event list */ + cds_list_add(&event->list, &channel->events_list.head); + + return 0; + +error: + return ret; +}