From d87bfb32097dd9dddb5de2b05dd87b53e3d3ad73 Mon Sep 17 00:00:00 2001 From: David Goulet Date: Wed, 5 Oct 2011 18:20:34 -0400 Subject: [PATCH] Add EEXIST support for kernel event on the tracer side Signed-off-by: David Goulet --- ltt-sessiond/event.c | 7 ++++++- ltt-sessiond/kernel-ctl.c | 8 ++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/ltt-sessiond/event.c b/ltt-sessiond/event.c index e8f54504c..c12e385b3 100644 --- a/ltt-sessiond/event.c +++ b/ltt-sessiond/event.c @@ -15,6 +15,7 @@ * Place - Suite 330, Boston, MA 02111-1307, USA. */ +#include #include #include @@ -127,7 +128,11 @@ int event_kernel_enable_tracepoint(struct ltt_kernel_session *ksession, if (kevent == NULL) { ret = kernel_create_event(event, kchan); if (ret < 0) { - ret = LTTCOMM_KERN_ENABLE_FAIL; + if (ret == -EEXIST) { + ret = LTTCOMM_KERN_EVENT_EXIST; + } else { + ret = LTTCOMM_KERN_ENABLE_FAIL; + } goto end; } } else if (kevent->enabled == 0) { diff --git a/ltt-sessiond/kernel-ctl.c b/ltt-sessiond/kernel-ctl.c index e486fa10a..9c270edb3 100644 --- a/ltt-sessiond/kernel-ctl.c +++ b/ltt-sessiond/kernel-ctl.c @@ -189,12 +189,16 @@ int kernel_create_event(struct lttng_event *ev, event = trace_kernel_create_event(ev); if (event == NULL) { + ret = -1; goto error; } ret = kernctl_create_event(channel->fd, event->event); if (ret < 0) { - PERROR("create event ioctl"); + if (errno != EEXIST) { + PERROR("create event ioctl"); + } + ret = -errno; goto free_event; } @@ -226,7 +230,7 @@ end: free_event: free(event); error: - return -1; + return ret; } /* -- 2.34.1