+ if (lttng_kernel_use_old_abi) {
+ struct lttng_kernel_old_event old_event;
+
+ memcpy(old_event.name, ev->name, sizeof(old_event.name));
+ old_event.instrumentation = ev->instrumentation;
+ switch (ev->instrumentation) {
+ case LTTNG_KERNEL_KPROBE:
+ old_event.u.kprobe.addr = ev->u.kprobe.addr;
+ old_event.u.kprobe.offset = ev->u.kprobe.offset;
+ memcpy(old_event.u.kprobe.symbol_name,
+ ev->u.kprobe.symbol_name,
+ sizeof(old_event.u.kprobe.symbol_name));
+ break;
+ case LTTNG_KERNEL_KRETPROBE:
+ old_event.u.kretprobe.addr = ev->u.kretprobe.addr;
+ old_event.u.kretprobe.offset = ev->u.kretprobe.offset;
+ memcpy(old_event.u.kretprobe.symbol_name,
+ ev->u.kretprobe.symbol_name,
+ sizeof(old_event.u.kretprobe.symbol_name));
+ break;
+ case LTTNG_KERNEL_FUNCTION:
+ memcpy(old_event.u.ftrace.symbol_name,
+ ev->u.ftrace.symbol_name,
+ sizeof(old_event.u.ftrace.symbol_name));
+ break;
+ default:
+ break;
+ }
+
+ return ioctl(fd, LTTNG_KERNEL_OLD_EVENT, &old_event);
+ }