X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Ftrace-kernel.c;h=86cbb5e251063611acbffc709572b4498fbc1b76;hb=8dbb86b8a981917165030d3a7fbbc2cb932888ed;hp=dc15829ba5c6488424327404922c665f4bc08f4f;hpb=412d7227e69ec845e44c49082a417f9454d9b55d;p=lttng-tools.git diff --git a/src/bin/lttng-sessiond/trace-kernel.c b/src/bin/lttng-sessiond/trace-kernel.c index dc15829ba..86cbb5e25 100644 --- a/src/bin/lttng-sessiond/trace-kernel.c +++ b/src/bin/lttng-sessiond/trace-kernel.c @@ -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;