Fix: sessiond: kernel: invalid error code check
[lttng-tools.git] / src / bin / lttng-sessiond / kernel.c
index 76162e08c75b3b15b226f02cc4f2625519e3d064..7795cad337eb996ee5ea67f1e2bf60a8bf25761b 100644 (file)
@@ -16,6 +16,7 @@
  */
 
 #define _LGPL_SOURCE
+
 #include <fcntl.h>
 #include <stdlib.h>
 #include <stdio.h>
@@ -659,14 +660,8 @@ int kernel_disable_event(struct ltt_kernel_event *event)
 
        ret = kernctl_disable(event->fd);
        if (ret < 0) {
-               switch (-ret) {
-               case EEXIST:
-                       ret = LTTNG_ERR_KERN_EVENT_EXIST;
-                       break;
-               default:
-                       PERROR("disable kernel event");
-                       break;
-               }
+               PERROR("Failed to disable kernel event: name = '%s', fd = %d",
+                               event->event->name, event->fd);
                goto error;
        }
 
@@ -1425,6 +1420,38 @@ error:
        return ret;
 }
 
+/*
+ * Check for the support of the packet sequence number via abi version number.
+ *
+ * Return 1 on success, 0 when feature is not supported, negative value in case
+ * of errors.
+ */
+int kernel_supports_ring_buffer_packet_sequence_number(void)
+{
+       int ret = 0; // Not supported by default
+       struct lttng_kernel_tracer_abi_version abi;
+
+       ret = kernctl_tracer_abi_version(kernel_tracer_fd, &abi);
+       if (ret < 0) {
+               ERR("Failed to retrieve lttng-modules ABI version");
+               goto error;
+       }
+
+       /*
+        * Packet sequence number was introduced in LTTng 2.8,
+        * lttng-modules ABI 2.1.
+        */
+       if (abi.major >= 2 && abi.minor >= 1) {
+               /* Supported */
+               ret = 1;
+       } else {
+               /* Not supported */
+               ret = 0;
+       }
+error:
+       return ret;
+}
+
 /*
  * Rotate a kernel session.
  *
This page took 0.02473 seconds and 4 git commands to generate.