Add enable kernel channel support
[lttng-tools.git] / ltt-sessiond / kernel-ctl.c
index 16b85bdb5bcb5b6793450b0f2794023541fa2466..bc92ffca918cb07b524aa8b9a6865308e455761b 100644 (file)
@@ -141,7 +141,6 @@ int kernel_create_event(struct lttng_event *ev, struct ltt_kernel_channel *chann
        }
 
        event->fd = ret;
-       event->enabled = 1;
        /* Prevent fd duplication after execlp() */
        ret = fcntl(event->fd, F_SETFD, FD_CLOEXEC);
        if (ret < 0) {
@@ -160,6 +159,31 @@ error:
        return -1;
 }
 
+/*
+ *  kernel_enable_channel
+ *
+ *  Enable a kernel channel.
+ */
+int kernel_enable_channel(struct ltt_kernel_channel *chan)
+{
+       int ret;
+
+       ret = kernctl_enable(chan->fd);
+       if (ret < 0) {
+               perror("enable chan ioctl");
+               ret = errno;
+               goto error;
+       }
+
+       chan->enabled = 1;
+       DBG("Kernel channel %s enabled (fd: %d)", chan->channel->name, chan->fd);
+
+       return 0;
+
+error:
+       return ret;
+}
+
 /*
  *  kernel_enable_event
  *
@@ -181,7 +205,7 @@ int kernel_enable_event(struct ltt_kernel_event *event)
        return 0;
 
 error:
-       return -1;
+       return ret;
 }
 
 /*
@@ -205,7 +229,7 @@ int kernel_disable_event(struct ltt_kernel_event *event)
        return 0;
 
 error:
-       return -1;
+       return ret;
 }
 
 /*
This page took 0.023434 seconds and 4 git commands to generate.