- /* Init event attribute */
- attr->instrumentation = type;
- strncpy(attr->name, name, LTTNG_SYM_NAME_LEN);
+ switch (ev->type) {
+ case LTTNG_EVENT_KPROBES:
+ attr->instrumentation = LTTNG_KERNEL_KPROBES;
+ attr->u.kprobe.addr = ev->attr.kprobe.addr;
+ attr->u.kprobe.offset = ev->attr.kprobe.offset;
+ strncpy(attr->u.kprobe.symbol_name,
+ ev->attr.kprobe.symbol_name, LTTNG_SYM_NAME_LEN);
+ break;
+ case LTTNG_EVENT_FUNCTION:
+ attr->instrumentation = LTTNG_KERNEL_FUNCTION;
+ strncpy(attr->u.ftrace.symbol_name,
+ ev->attr.ftrace.symbol_name, LTTNG_SYM_NAME_LEN);
+ break;
+ case LTTNG_EVENT_TRACEPOINTS:
+ attr->instrumentation = LTTNG_KERNEL_TRACEPOINTS;
+ break;
+ default:
+ ERR("Unknown kernel instrumentation type (%d)", ev->type);
+ goto error;
+ }
+
+ /* Copy event name */
+ strncpy(attr->name, ev->name, LTTNG_SYM_NAME_LEN);
+