-static
-int _lttng_event_notifier_unregister(
- struct lttng_kernel_event_notifier *event_notifier)
-{
- const struct lttng_kernel_event_desc *desc;
- int ret = -EINVAL;
-
- if (!event_notifier->priv->parent.registered)
- return 0;
-
- desc = event_notifier->priv->parent.desc;
- switch (event_notifier->priv->parent.instrumentation) {
- case LTTNG_KERNEL_ABI_TRACEPOINT:
- ret = lttng_wrapper_tracepoint_probe_unregister(event_notifier->priv->parent.desc->event_kname,
- event_notifier->priv->parent.desc->tp_class->probe_callback,
- &event_notifier->parent);
- break;
-
- case LTTNG_KERNEL_ABI_KPROBE:
- lttng_kprobes_unregister_event(&event_notifier->parent);
- ret = 0;
- break;
-
- case LTTNG_KERNEL_ABI_UPROBE:
- lttng_uprobes_unregister_event(&event_notifier->parent);
- ret = 0;
- break;
-
- case LTTNG_KERNEL_ABI_SYSCALL:
- ret = lttng_syscall_filter_disable_event(&event_notifier->parent);
- break;
-
- case LTTNG_KERNEL_ABI_KRETPROBE:
- lttng_fallthrough;
- case LTTNG_KERNEL_ABI_FUNCTION:
- lttng_fallthrough;
- case LTTNG_KERNEL_ABI_NOOP:
- lttng_fallthrough;
- default:
- WARN_ON_ONCE(1);
- }
- if (!ret)
- event_notifier->priv->parent.registered = 0;
- return ret;
-}
-