sessiond: add support for anonymous triggers
[lttng-tools.git] / src / bin / lttng-sessiond / kernel.c
index eebe119d2701dc8e3875c9f5e2f482a0849fd452..e99d8be44600ce212260c88cb6ce272364053ec9 100644 (file)
@@ -28,8 +28,8 @@
 
 #include <lttng/userspace-probe.h>
 #include <lttng/userspace-probe-internal.h>
-#include <lttng/condition/on-event.h>
-#include <lttng/condition/on-event-internal.h>
+#include <lttng/condition/event-rule-matches.h>
+#include <lttng/condition/event-rule-matches-internal.h>
 #include <lttng/event-rule/event-rule.h>
 #include <lttng/event-rule/event-rule-internal.h>
 #include <lttng/event-rule/userspace-probe-internal.h>
@@ -769,14 +769,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;
        }
 
@@ -805,15 +799,8 @@ int kernel_disable_event_notifier_rule(struct ltt_kernel_event_notifier_rule *ev
 
        ret = kernctl_disable(event->fd);
        if (ret < 0) {
-               switch (-ret) {
-               case EEXIST:
-                       ret = LTTNG_ERR_KERN_EVENT_EXIST;
-                       break;
-               default:
-                       PERROR("Failed to disable kernel event notifier: fd = %d, token = %" PRIu64,
-                                       event->fd, event->token);
-                       break;
-               }
+               PERROR("Failed to disable kernel event notifier: fd = %d, token = %" PRIu64,
+                               event->fd, event->token);
                goto error;
        }
 
@@ -1959,8 +1946,8 @@ int init_kernel_tracer(void)
        }
 
        /* Validate kernel version */
-       ret = kernel_validate_version(&kernel_tracer_version,
-                       &kernel_tracer_abi_version);
+       ret = kernel_validate_version(&the_kernel_tracer_version,
+                       &the_kernel_tracer_abi_version);
        if (ret < 0) {
                goto error_version;
        }
@@ -2036,6 +2023,7 @@ error_version:
                PERROR("Failed to close kernel tracer file descriptor: fd = %d",
                                kernel_tracer_fd);
        }
+
        kernel_tracer_fd = -1;
        return LTTNG_ERR_KERN_VERSION;
 
@@ -2047,6 +2035,8 @@ error_token_ht:
                                kernel_tracer_event_notifier_group_notification_fd);
        }
 
+       kernel_tracer_event_notifier_group_notification_fd = -1;
+
 error_modules:
        ret = close(kernel_tracer_event_notifier_group_fd);
        if (ret) {
@@ -2054,12 +2044,16 @@ error_modules:
                                kernel_tracer_event_notifier_group_fd);
        }
 
+       kernel_tracer_event_notifier_group_fd = -1;
+
        ret = close(kernel_tracer_fd);
        if (ret) {
                PERROR("Failed to close kernel tracer file descriptor: fd = %d",
                                kernel_tracer_fd);
        }
 
+       kernel_tracer_fd = -1;
+
 error_open:
        modprobe_remove_lttng_control();
 
@@ -2079,7 +2073,7 @@ void cleanup_kernel_tracer(void)
        DBG2("Closing kernel event notifier group notification file descriptor");
        if (kernel_tracer_event_notifier_group_notification_fd >= 0) {
                int ret = notification_thread_command_remove_tracer_event_source(
-                               notification_thread_handle,
+                               the_notification_thread_handle,
                                kernel_tracer_event_notifier_group_notification_fd);
                if (ret != LTTNG_OK) {
                        ERR("Failed to remove kernel event notifier notification from notification thread");
@@ -2319,10 +2313,10 @@ static enum lttng_error_code kernel_create_event_notifier_rule(
        assert(condition);
 
        condition_type = lttng_condition_get_type(condition);
-       assert(condition_type == LTTNG_CONDITION_TYPE_ON_EVENT);
+       assert(condition_type == LTTNG_CONDITION_TYPE_EVENT_RULE_MATCHES);
 
        /* Does not acquire a reference. */
-       condition_status = lttng_condition_on_event_get_rule(
+       condition_status = lttng_condition_event_rule_matches_get_rule(
                        condition, &event_rule);
        assert(condition_status == LTTNG_CONDITION_STATUS_OK);
        assert(event_rule);
@@ -2331,7 +2325,8 @@ static enum lttng_error_code kernel_create_event_notifier_rule(
        assert(event_rule_type != LTTNG_EVENT_RULE_TYPE_UNKNOWN);
 
        error_code_ret = trace_kernel_create_event_notifier_rule(trigger, token,
-                       lttng_condition_on_event_get_error_counter_index(condition),
+                       lttng_condition_event_rule_matches_get_error_counter_index(
+                                       condition),
                        &event_notifier_rule);
        if (error_code_ret != LTTNG_OK) {
                goto error;
@@ -2345,7 +2340,8 @@ static enum lttng_error_code kernel_create_event_notifier_rule(
 
        kernel_event_notifier.event.token = event_notifier_rule->token;
        kernel_event_notifier.error_counter_idx =
-                       lttng_condition_on_event_get_error_counter_index(condition);
+                       lttng_condition_event_rule_matches_get_error_counter_index(
+                                       condition);
 
        fd = kernctl_create_event_notifier(
                        kernel_tracer_event_notifier_group_fd,
@@ -2408,13 +2404,13 @@ static enum lttng_error_code kernel_create_event_notifier_rule(
        }
 
        /* Set the capture bytecode if any. */
-       cond_status = lttng_condition_on_event_get_capture_descriptor_count(
+       cond_status = lttng_condition_event_rule_matches_get_capture_descriptor_count(
                        condition, &capture_bytecode_count);
        assert(cond_status == LTTNG_CONDITION_STATUS_OK);
 
        for (i = 0; i < capture_bytecode_count; i++) {
                const struct lttng_bytecode *capture_bytecode =
-                               lttng_condition_on_event_get_capture_bytecode_at_index(
+                               lttng_condition_event_rule_matches_get_capture_bytecode_at_index(
                                                condition, i);
 
                if (capture_bytecode == NULL) {
@@ -2492,7 +2488,7 @@ enum lttng_error_code kernel_register_event_notifier(
        assert(condition);
 
        /* Does not acquire a reference to the event rule. */
-       status = lttng_condition_on_event_get_rule(
+       status = lttng_condition_event_rule_matches_get_rule(
                        condition, &event_rule);
        assert(status == LTTNG_CONDITION_STATUS_OK);
 
This page took 0.025784 seconds and 4 git commands to generate.