X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=ltt-sessiond%2Fevent.c;h=1f90c1c73069d97c520d2c8670ef12fe7dd68c64;hp=c12e385b31015bd41207947d42a807db22d75a92;hb=48842b309b2000205367409c0f29ca40ec3e251c;hpb=d87bfb32097dd9dddb5de2b05dd87b53e3d3ad73 diff --git a/ltt-sessiond/event.c b/ltt-sessiond/event.c index c12e385b3..1f90c1c73 100644 --- a/ltt-sessiond/event.c +++ b/ltt-sessiond/event.c @@ -17,13 +17,21 @@ #include #include +#include #include #include #include +#ifdef CONFIG_LTTNG_TOOLS_HAVE_UST +#include +#else +#include "lttng-ust-ctl.h" +#endif + #include "channel.h" #include "event.h" +#include "hashtable.h" #include "kernel-ctl.h" /* @@ -229,3 +237,60 @@ int event_kernel_enable_all(struct ltt_kernel_session *ksession, end: return ret; } + +/* + * Enable UST tracepoint event for a channel from a UST session. + */ +#ifdef DISABLE +int event_ust_enable_tracepoint(struct ltt_ust_session *usess, + struct ltt_ust_channel *uchan, struct ltt_ust_event *uevent) +{ + int ret; + struct lttng_ust_event ltt_uevent; + struct object_data *obj_event; + + strncpy(ltt_uevent.name, uevent->attr.name, sizeof(ltt_uevent.name)); + ltt_uevent.name[sizeof(ltt_uevent.name) - 1] = '\0'; + /* TODO: adjust to other instrumentation types */ + ltt_uevent.instrumentation = LTTNG_UST_TRACEPOINT; + + ret = ustctl_create_event(app->key.sock, <t_uevent, + uchan->obj, &obj_event); + if (ret < 0) { + DBG("Error ustctl create event %s for app pid: %d, sock: %d ret %d", + uevent->attr.name, app->key.pid, app->key.sock, ret); + goto next; + } + + uevent->obj = obj_event; + uevent->handle = obj_event->handle; + uevent->enabled = 1; + ret = LTTCOMM_OK; +end: + return ret; +} +#endif + +#ifdef DISABLE +int event_ust_disable_tracepoint(struct ltt_ust_session *ustsession, + struct ltt_ust_channel *ustchan, char *event_name) +{ + int ret; + struct ltt_ust_event *ustevent; + + ustevent = trace_ust_find_event_by_name(ustchan->events, event_name); + if (ustevent == NULL) { + ret = LTTCOMM_NO_EVENT; + goto end; + } + //ret = ustctl_disable(ustsession->sock, ustevent->obj); + if (ret < 0) { + ret = LTTCOMM_UST_ENABLE_FAIL; + goto end; + } + ustevent->enabled = 0; + ret = LTTCOMM_OK; +end: + return ret; +} +#endif