X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Ftrace-kernel.c;h=382902a901ee321e5f7ec6d01ce547fe91f7d156;hb=670a26e4165562ab2dc5a16b9941f942e4f30996;hp=f779952a0eeb15b44b2a0d7cc94a862663cedffd;hpb=90aa04a116a8be510b9d256b47de6bbb4144fb8b;p=lttng-tools.git diff --git a/src/bin/lttng-sessiond/trace-kernel.c b/src/bin/lttng-sessiond/trace-kernel.c index f779952a0..382902a90 100644 --- a/src/bin/lttng-sessiond/trace-kernel.c +++ b/src/bin/lttng-sessiond/trace-kernel.c @@ -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; @@ -946,11 +966,11 @@ void trace_kernel_destroy_channel(struct ltt_kernel_channel *channel) /* Remove from channel list */ cds_list_del(&channel->list); - if (notification_thread_handle - && channel->published_to_notification_thread) { + if (the_notification_thread_handle && + channel->published_to_notification_thread) { status = notification_thread_command_remove_channel( - notification_thread_handle, - channel->key, LTTNG_DOMAIN_KERNEL); + the_notification_thread_handle, channel->key, + LTTNG_DOMAIN_KERNEL); assert(status == LTTNG_OK); } free(channel->channel->attr.extended.ptr);