X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Fkernel.c;h=d93478edf86c706b1dea1d710cb786fe621667e6;hp=d7c7984d201ba96c82d050eb71a48dca798c8e38;hb=959e3c66727698e58a8788aceeda5820b3c938ba;hpb=76992d4d80834399b1b08bc21eca634f22d18017 diff --git a/src/bin/lttng-sessiond/kernel.c b/src/bin/lttng-sessiond/kernel.c index d7c7984d2..d93478edf 100644 --- a/src/bin/lttng-sessiond/kernel.c +++ b/src/bin/lttng-sessiond/kernel.c @@ -1641,16 +1641,10 @@ int kernel_syscall_mask(int chan_fd, char **syscall_mask, uint32_t *nr_bits) return kernctl_syscall_mask(chan_fd, syscall_mask, nr_bits); } -/* - * Check for the support of the RING_BUFFER_SNAPSHOT_SAMPLE_POSITIONS 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_snapshot_sample_positions(void) +static +int kernel_tracer_abi_greater_or_equal(unsigned int major, unsigned int minor) { - int ret = 0; // Not supported by default + int ret; struct lttng_kernel_tracer_abi_version abi; ret = kernctl_tracer_abi_version(kernel_tracer_fd, &abi); @@ -1659,18 +1653,24 @@ int kernel_supports_ring_buffer_snapshot_sample_positions(void) goto error; } + ret = abi.major > major || (abi.major == major && abi.minor >= minor); +error: + return ret; +} + +/* + * Check for the support of the RING_BUFFER_SNAPSHOT_SAMPLE_POSITIONS 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_snapshot_sample_positions(void) +{ /* * RING_BUFFER_SNAPSHOT_SAMPLE_POSITIONS was introduced in 2.3 */ - if (abi.major >= 2 && abi.minor >= 3) { - /* Supported */ - ret = 1; - } else { - /* Not supported */ - ret = 0; - } -error: - return ret; + return kernel_tracer_abi_greater_or_equal(2, 3); } /* @@ -1681,28 +1681,25 @@ error: */ 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; + return kernel_tracer_abi_greater_or_equal(2, 1); +} + +/* + * Check for the support of event notifiers via abi version number. + * + * Return 1 on success, 0 when feature is not supported, negative value in case + * of errors. + */ +int kernel_supports_event_notifiers(void) +{ + /* + * Event notifiers were introduced in LTTng 2.13, lttng-modules ABI 2.6. + */ + return kernel_tracer_abi_greater_or_equal(2, 6); } /*