sessiond: add support for anonymous triggers
[lttng-tools.git] / src / bin / lttng-sessiond / trace-kernel.c
index dc15829ba5c6488424327404922c665f4bc08f4f..86cbb5e251063611acbffc709572b4498fbc1b76 100644 (file)
@@ -502,9 +502,9 @@ enum lttng_error_code trace_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);
 
-       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);
@@ -676,15 +676,35 @@ enum lttng_error_code trace_kernel_init_event_notifier_from_event_rule(
                const enum lttng_event_rule_status status =
                                lttng_event_rule_syscall_get_pattern(
                                                rule, &name);
+               const enum lttng_event_rule_syscall_emission_site_type
+                       emission_site_type =
+                       lttng_event_rule_syscall_get_emission_site_type(rule);
+               enum lttng_kernel_syscall_entryexit entryexit;
 
                assert(status == LTTNG_EVENT_RULE_STATUS_OK);
+               assert(emission_site_type != LTTNG_EVENT_RULE_SYSCALL_EMISSION_SITE_UNKNOWN);
+
+               switch(emission_site_type) {
+               case LTTNG_EVENT_RULE_SYSCALL_EMISSION_SITE_ENTRY:
+                       entryexit = LTTNG_KERNEL_SYSCALL_ENTRY;
+                       break;
+               case LTTNG_EVENT_RULE_SYSCALL_EMISSION_SITE_EXIT:
+                       entryexit = LTTNG_KERNEL_SYSCALL_EXIT;
+                       break;
+               case LTTNG_EVENT_RULE_SYSCALL_EMISSION_SITE_ENTRY_EXIT:
+                       entryexit = LTTNG_KERNEL_SYSCALL_ENTRYEXIT;
+                       break;
+               default:
+                       abort();
+                       break;
+               }
 
                kernel_event_notifier->event.instrumentation =
                                LTTNG_KERNEL_SYSCALL;
                kernel_event_notifier->event.u.syscall.abi =
                                LTTNG_KERNEL_SYSCALL_ABI_ALL;
                kernel_event_notifier->event.u.syscall.entryexit =
-                               LTTNG_KERNEL_SYSCALL_ENTRY;
+                               entryexit;
                kernel_event_notifier->event.u.syscall.match =
                                LTTNG_KERNEL_SYSCALL_MATCH_NAME;
                ret_code = LTTNG_OK;
This page took 0.024948 seconds and 4 git commands to generate.