fix: include order for older kernels
[lttng-modules.git] / include / lttng / events.h
index 5fb7a7804a1807ba8d5f22e960c2b31ccae2d5e0..09ab3cf21b544133832cc9bc09b424ac85b69ccc 100644 (file)
 #ifndef _LTTNG_EVENTS_H
 #define _LTTNG_EVENTS_H
 
-#include <linux/irq_work.h>
 #include <linux/version.h>
 #include <linux/list.h>
 #include <linux/kprobes.h>
 #include <linux/kref.h>
 #include <linux/uuid.h>
+#include <linux/irq_work.h>
 #include <wrapper/uprobes.h>
 #include <lttng/cpuhotplug.h>
 #include <lttng/tracer.h>
@@ -270,12 +270,25 @@ struct lttng_enabler_ref {
 };
 
 struct lttng_uprobe_handler {
-       struct lttng_event *event;
+       union {
+               struct lttng_event *event;
+               struct lttng_event_notifier *event_notifier;
+       } u;
        loff_t offset;
        struct uprobe_consumer up_consumer;
        struct list_head node;
 };
 
+struct lttng_kprobe {
+       struct kprobe kp;
+       char *symbol_name;
+};
+
+struct lttng_uprobe {
+       struct inode *inode;
+       struct list_head head;
+};
+
 enum lttng_syscall_entryexit {
        LTTNG_SYSCALL_ENTRY,
        LTTNG_SYSCALL_EXIT,
@@ -300,18 +313,12 @@ struct lttng_event {
        struct lttng_ctx *ctx;
        enum lttng_kernel_instrumentation instrumentation;
        union {
-               struct {
-                       struct kprobe kp;
-                       char *symbol_name;
-               } kprobe;
+               struct lttng_kprobe kprobe;
                struct {
                        struct lttng_krp *lttng_krp;
                        char *symbol_name;
                } kretprobe;
-               struct {
-                       struct inode *inode;
-                       struct list_head head;
-               } uprobe;
+               struct lttng_uprobe uprobe;
                struct {
                        char *syscall_name;
                        enum lttng_syscall_entryexit entryexit;
@@ -342,6 +349,8 @@ struct lttng_event_notifier {
 
        enum lttng_kernel_instrumentation instrumentation;
        union {
+               struct lttng_kprobe kprobe;
+               struct lttng_uprobe uprobe;
        } u;
 
        /* Backward references: list of lttng_enabler_ref (ref to enablers) */
@@ -721,6 +730,9 @@ int lttng_channel_disable(struct lttng_channel *channel);
 int lttng_event_enable(struct lttng_event *event);
 int lttng_event_disable(struct lttng_event *event);
 
+int lttng_event_notifier_enable(struct lttng_event_notifier *event_notifier);
+int lttng_event_notifier_disable(struct lttng_event_notifier *event_notifier);
+
 void lttng_transport_register(struct lttng_transport *transport);
 void lttng_transport_unregister(struct lttng_transport *transport);
 
@@ -759,22 +771,24 @@ void lttng_clock_ref(void);
 void lttng_clock_unref(void);
 
 #if defined(CONFIG_HAVE_SYSCALL_TRACEPOINTS)
-int lttng_syscalls_register(struct lttng_channel *chan, void *filter);
-int lttng_syscalls_unregister(struct lttng_channel *chan);
-int lttng_syscalls_destroy(struct lttng_channel *chan);
-int lttng_syscall_filter_enable(struct lttng_channel *chan,
+int lttng_syscalls_register_event(struct lttng_channel *chan, void *filter);
+int lttng_syscalls_unregister_event(struct lttng_channel *chan);
+int lttng_syscalls_destroy_event(struct lttng_channel *chan);
+int lttng_syscall_filter_enable_event(struct lttng_channel *chan,
                struct lttng_event *event);
-int lttng_syscall_filter_disable(struct lttng_channel *chan,
+int lttng_syscall_filter_disable_event(struct lttng_channel *chan,
                struct lttng_event *event);
 long lttng_channel_syscall_mask(struct lttng_channel *channel,
                struct lttng_kernel_syscall_mask __user *usyscall_mask);
+
 #else
-static inline int lttng_syscalls_register(struct lttng_channel *chan, void *filter)
+static inline int lttng_syscalls_register_event(
+               struct lttng_channel *chan, void *filter)
 {
        return -ENOSYS;
 }
 
-static inline int lttng_syscalls_unregister(struct lttng_channel *chan)
+static inline int lttng_syscalls_unregister_event(struct lttng_channel *chan)
 {
        return 0;
 }
@@ -784,13 +798,13 @@ static inline int lttng_syscalls_destroy(struct lttng_channel *chan)
        return 0;
 }
 
-static inline int lttng_syscall_filter_enable(struct lttng_channel *chan,
+static inline int lttng_syscall_filter_enable_event(struct lttng_channel *chan,
                struct lttng_event *event);
 {
        return -ENOSYS;
 }
 
-static inline int lttng_syscall_filter_disable(struct lttng_channel *chan,
+static inline int lttng_syscall_filter_disable_event(struct lttng_channel *chan,
                struct lttng_event *event);
 {
        return -ENOSYS;
@@ -1007,16 +1021,22 @@ void lttng_logger_exit(void);
 extern int lttng_statedump_start(struct lttng_session *session);
 
 #ifdef CONFIG_KPROBES
-int lttng_kprobes_register(const char *name,
+int lttng_kprobes_register_event(const char *name,
                const char *symbol_name,
                uint64_t offset,
                uint64_t addr,
                struct lttng_event *event);
-void lttng_kprobes_unregister(struct lttng_event *event);
-void lttng_kprobes_destroy_private(struct lttng_event *event);
+void lttng_kprobes_unregister_event(struct lttng_event *event);
+void lttng_kprobes_destroy_event_private(struct lttng_event *event);
+int lttng_kprobes_register_event_notifier(const char *symbol_name,
+               uint64_t offset,
+               uint64_t addr,
+               struct lttng_event_notifier *event_notifier);
+void lttng_kprobes_unregister_event_notifier(struct lttng_event_notifier *event_notifier);
+void lttng_kprobes_destroy_event_notifier_private(struct lttng_event_notifier *event_notifier);
 #else
 static inline
-int lttng_kprobes_register(const char *name,
+int lttng_kprobes_register_event(const char *name,
                const char *symbol_name,
                uint64_t offset,
                uint64_t addr,
@@ -1026,12 +1046,31 @@ int lttng_kprobes_register(const char *name,
 }
 
 static inline
-void lttng_kprobes_unregister(struct lttng_event *event)
+void lttng_kprobes_unregister_event(struct lttng_event *event)
 {
 }
 
 static inline
-void lttng_kprobes_destroy_private(struct lttng_event *event)
+void lttng_kprobes_destroy_event_private(struct lttng_event *event)
+{
+}
+
+static inline
+int lttng_kprobes_register_event_notifier(const char *symbol_name,
+               uint64_t offset,
+               uint64_t addr,
+               struct lttng_event_notifier *event_notifier)
+{
+       return -ENOSYS;
+}
+
+static inline
+void lttng_kprobes_unregister_event_notifier(struct lttng_event_notifier *event_notifier)
+{
+}
+
+static inline
+void lttng_kprobes_destroy_event_notifier_private(struct lttng_event_notifier *event_notifier)
 {
 }
 #endif
@@ -1039,35 +1078,68 @@ void lttng_kprobes_destroy_private(struct lttng_event *event)
 int lttng_event_add_callsite(struct lttng_event *event,
        struct lttng_kernel_event_callsite *callsite);
 
+int lttng_event_notifier_add_callsite(struct lttng_event_notifier *event_notifier,
+       struct lttng_kernel_event_callsite *callsite);
+
 #ifdef CONFIG_UPROBES
-int lttng_uprobes_register(const char *name,
+int lttng_uprobes_register_event(const char *name,
        int fd, struct lttng_event *event);
-int lttng_uprobes_add_callsite(struct lttng_event *event,
+int lttng_uprobes_event_add_callsite(struct lttng_event *event,
+       struct lttng_kernel_event_callsite *callsite);
+void lttng_uprobes_unregister_event(struct lttng_event *event);
+void lttng_uprobes_destroy_event_private(struct lttng_event *event);
+int lttng_uprobes_register_event_notifier(const char *name,
+       int fd, struct lttng_event_notifier *event_notifier);
+int lttng_uprobes_event_notifier_add_callsite(struct lttng_event_notifier *event_notifier,
        struct lttng_kernel_event_callsite *callsite);
-void lttng_uprobes_unregister(struct lttng_event *event);
-void lttng_uprobes_destroy_private(struct lttng_event *event);
+void lttng_uprobes_unregister_event_notifier(struct lttng_event_notifier *event_notifier);
+void lttng_uprobes_destroy_event_notifier_private(struct lttng_event_notifier *event_notifier);
 #else
 static inline
-int lttng_uprobes_register(const char *name,
+int lttng_uprobes_register_event(const char *name,
        int fd, struct lttng_event *event)
 {
        return -ENOSYS;
 }
 
 static inline
-int lttng_uprobes_add_callsite(struct lttng_event *event,
+int lttng_uprobes_event_add_callsite(struct lttng_event *event,
+       struct lttng_kernel_event_callsite *callsite)
+{
+       return -ENOSYS;
+}
+
+static inline
+void lttng_uprobes_unregister_event(struct lttng_event *event)
+{
+}
+
+static inline
+void lttng_uprobes_destroy_event_private(struct lttng_event *event)
+{
+}
+
+static inline
+int lttng_uprobes_register_event_notifier(const char *name,
+       int fd, struct lttng_event_notifier *event_notifier)
+{
+       return -ENOSYS;
+}
+
+static inline
+int lttng_uprobes_event_notifier_add_callsite(struct lttng_event_notifier *event_notifier,
        struct lttng_kernel_event_callsite *callsite)
 {
        return -ENOSYS;
 }
 
 static inline
-void lttng_uprobes_unregister(struct lttng_event *event)
+void lttng_uprobes_unregister_event_notifier(struct lttng_event_notifier *event_notifier)
 {
 }
 
 static inline
-void lttng_uprobes_destroy_private(struct lttng_event *event)
+void lttng_uprobes_destroy_event_notifier_private(struct lttng_event_notifier *event_notifier)
 {
 }
 #endif
This page took 0.027255 seconds and 4 git commands to generate.