struct list_head head; /* chain registered probes */
};
+struct lttng_krp; /* Kretprobe handling */
+
/*
* ltt_event structure is referred to by the tracing fast path. It must be
* kept small.
struct kprobe kp;
char *symbol_name;
} kprobe;
+ struct {
+ struct lttng_krp *lttng_krp;
+ char *symbol_name;
+ } kretprobe;
struct {
char *symbol_name;
} ftrace;
}
#endif
+#ifdef CONFIG_KRETPROBES
+int lttng_kretprobes_register(const char *name,
+ const char *symbol_name,
+ uint64_t offset,
+ uint64_t addr,
+ struct ltt_event *event_entry,
+ struct ltt_event *event_exit);
+void lttng_kretprobes_unregister(struct ltt_event *event);
+void lttng_kretprobes_destroy_private(struct ltt_event *event);
+#else
+static inline
+int lttng_kretprobes_register(const char *name,
+ const char *symbol_name,
+ uint64_t offset,
+ uint64_t addr,
+ struct ltt_event *event_entry,
+ struct ltt_event *event_exit)
+{
+ return -ENOSYS;
+}
+
+static inline
+void lttng_kretprobes_unregister(struct ltt_event *event)
+{
+}
+
+static inline
+void lttng_kretprobes_destroy_private(struct ltt_event *event)
+{
+}
+#endif
+
#ifdef CONFIG_DYNAMIC_FTRACE
int lttng_ftrace_register(const char *name,
const char *symbol_name,