Sessiond timer thread
[lttng-tools.git] / src / bin / lttng-sessiond / kernel.c
index 535a5b8e8c4035918f0e2665ac0af8f0e7ad8eda..e5f068a0cd9515408a34b4621201e8b75f714a81 100644 (file)
@@ -535,6 +535,7 @@ int kernel_open_metadata(struct ltt_kernel_session *session)
        }
 
        lkm->fd = ret;
+       lkm->key = ++next_kernel_channel_key;
        /* Prevent fd duplication after execlp() */
        ret = fcntl(lkm->fd, F_SETFD, FD_CLOEXEC);
        if (ret < 0) {
@@ -824,38 +825,38 @@ error:
 /*
  * Get kernel version and validate it.
  */
-int kernel_validate_version(int tracer_fd)
+int kernel_validate_version(int tracer_fd,
+               struct lttng_kernel_tracer_version *version,
+               struct lttng_kernel_tracer_abi_version *abi_version)
 {
        int ret;
-       struct lttng_kernel_tracer_version version;
-       struct lttng_kernel_tracer_abi_version abi_version;
 
-       ret = kernctl_tracer_version(tracer_fd, &version);
+       ret = kernctl_tracer_version(tracer_fd, version);
        if (ret < 0) {
                ERR("Failed to retrieve the lttng-modules version");
                goto error;
        }
 
        /* Validate version */
-       if (version.major != VERSION_MAJOR) {
+       if (version->major != VERSION_MAJOR) {
                ERR("Kernel tracer major version (%d) is not compatible with lttng-tools major version (%d)",
-                       version.major, VERSION_MAJOR);
+                       version->major, VERSION_MAJOR);
                goto error_version;
        }
-       ret = kernctl_tracer_abi_version(tracer_fd, &abi_version);
+       ret = kernctl_tracer_abi_version(tracer_fd, abi_version);
        if (ret < 0) {
                ERR("Failed to retrieve lttng-modules ABI version");
                goto error;
        }
-       if (abi_version.major != LTTNG_MODULES_ABI_MAJOR_VERSION) {
+       if (abi_version->major != LTTNG_MODULES_ABI_MAJOR_VERSION) {
                ERR("Kernel tracer ABI version (%d.%d) does not match the expected ABI major version (%d.*)",
-                       abi_version.major, abi_version.minor,
+                       abi_version->major, abi_version->minor,
                        LTTNG_MODULES_ABI_MAJOR_VERSION);
                goto error;
        }
        DBG2("Kernel tracer version validated (%d.%d, ABI %d.%d)",
-                       version.major, version.minor,
-                       abi_version.major, abi_version.minor);
+                       version->major, version->minor,
+                       abi_version->major, abi_version->minor);
        return 0;
 
 error_version:
@@ -1039,7 +1040,7 @@ int kernel_snapshot_record(struct ltt_kernel_session *ksess,
 
                /* For each channel, ask the consumer to snapshot it. */
                cds_list_for_each_entry(chan, &ksess->channel_list.head, list) {
-                       ret = consumer_snapshot_channel(socket, chan->fd, output, 0,
+                       ret = consumer_snapshot_channel(socket, chan->key, output, 0,
                                        ksess->uid, ksess->gid,
                                        DEFAULT_KERNEL_TRACE_DIR, wait,
                                        nb_packets_per_stream);
@@ -1052,7 +1053,7 @@ int kernel_snapshot_record(struct ltt_kernel_session *ksess,
                }
 
                /* Snapshot metadata, */
-               ret = consumer_snapshot_channel(socket, ksess->metadata->fd, output,
+               ret = consumer_snapshot_channel(socket, ksess->metadata->key, output,
                                1, ksess->uid, ksess->gid,
                                DEFAULT_KERNEL_TRACE_DIR, wait, 0);
                if (ret < 0) {
This page took 0.024473 seconds and 4 git commands to generate.