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);
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);
}
/*
*/
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);
}
/*
socket, node.node) {
struct ltt_kernel_channel *chan;
- /* For each channel, ask the consumer to rotate it. */
+ /* For each channel, ask the consumer to rotate it. */
cds_list_for_each_entry(chan, &ksess->channel_list.head, list) {
DBG("Rotate kernel channel %" PRIu64 ", session %s",
chan->key, session->name);