Document last supported kernel version for stable-2.10 branch
[lttng-modules.git] / lttng-events.h
index 5d0ef4dc72b307881e57c730be87e385929b6164..4a5cc4b87fcf285725fa74e1ef2ae425bef7c1e3 100644 (file)
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-#include <linux/version.h>
+#include <lttng-kernel-version.h>
 #include <linux/list.h>
 #include <linux/kprobes.h>
 #include <linux/kref.h>
+#include <lttng-cpuhotplug.h>
 #include <wrapper/uuid.h>
 #include <lttng-tracer.h>
 #include <lttng-abi.h>
@@ -69,9 +70,17 @@ enum channel_type {
        METADATA_CHANNEL,
 };
 
+struct lttng_enum_value {
+       unsigned long long value;
+       unsigned int signedness:1;
+};
+
 struct lttng_enum_entry {
-       unsigned long long start, end;  /* start and end are inclusive */
+       struct lttng_enum_value start, end;     /* start and end are inclusive */
        const char *string;
+       struct {
+               unsigned int is_auto:1;
+       } options;
 };
 
 #define __type_integer(_type, _size, _alignment, _signedness,  \
@@ -101,7 +110,8 @@ struct lttng_integer_type {
 union _lttng_basic_type {
        struct lttng_integer_type integer;
        struct {
-               const char *name;
+               const struct lttng_enum_desc *desc;     /* Enumeration mapping */
+               struct lttng_integer_type container_type;
        } enumeration;
        struct {
                enum lttng_string_encodings encoding;
@@ -149,11 +159,10 @@ struct lttng_type {
        } u;
 };
 
-struct lttng_enum {
+struct lttng_enum_desc {
        const char *name;
-       struct lttng_type container_type;
        const struct lttng_enum_entry *entries;
-       unsigned int len;
+       unsigned int nr_entries;
 };
 
 /* Event field description */
@@ -176,8 +185,13 @@ union lttng_ctx_value {
  * lttng_ctx_field because cpu hotplug needs fixed-location addresses.
  */
 struct lttng_perf_counter_field {
+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,10,0))
+       struct lttng_cpuhp_node cpuhp_prepare;
+       struct lttng_cpuhp_node cpuhp_online;
+#else
        struct notifier_block nb;
        int hp_enable;
+#endif
        struct perf_event_attr *attr;
        struct perf_event **e;  /* per-cpu array */
 };
@@ -293,9 +307,6 @@ struct lttng_event {
                        struct lttng_krp *lttng_krp;
                        char *symbol_name;
                } kretprobe;
-               struct {
-                       char *symbol_name;
-               } ftrace;
        } u;
        struct list_head list;          /* Event list in session */
        unsigned int metadata_dumped:1;
@@ -310,7 +321,7 @@ struct lttng_event {
 };
 
 enum lttng_enabler_type {
-       LTTNG_ENABLER_WILDCARD,
+       LTTNG_ENABLER_STAR_GLOB,
        LTTNG_ENABLER_NAME,
 };
 
@@ -528,6 +539,7 @@ int lttng_session_enable(struct lttng_session *session);
 int lttng_session_disable(struct lttng_session *session);
 void lttng_session_destroy(struct lttng_session *session);
 int lttng_session_metadata_regenerate(struct lttng_session *session);
+int lttng_session_statedump(struct lttng_session *session);
 void metadata_cache_destroy(struct kref *kref);
 
 struct lttng_channel *lttng_channel_create(struct lttng_session *session,
@@ -687,11 +699,15 @@ int lttng_add_migratable_to_ctx(struct lttng_ctx **ctx)
        return -ENOSYS;
 }
 #endif
-#if defined(CONFIG_PERF_EVENTS) && (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,33))
+#if defined(CONFIG_PERF_EVENTS) && (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(2,6,33))
 int lttng_add_perf_counter_to_ctx(uint32_t type,
                                  uint64_t config,
                                  const char *name,
                                  struct lttng_ctx **ctx);
+int lttng_cpuhp_perf_counter_online(unsigned int cpu,
+               struct lttng_cpuhp_node *node);
+int lttng_cpuhp_perf_counter_dead(unsigned int cpu,
+               struct lttng_cpuhp_node *node);
 #else
 static inline
 int lttng_add_perf_counter_to_ctx(uint32_t type,
@@ -701,6 +717,18 @@ int lttng_add_perf_counter_to_ctx(uint32_t type,
 {
        return -ENOSYS;
 }
+static inline
+int lttng_cpuhp_perf_counter_online(unsigned int cpu,
+               struct lttng_cpuhp_node *node)
+{
+       return 0;
+}
+static inline
+int lttng_cpuhp_perf_counter_dead(unsigned int cpu,
+               struct lttng_cpuhp_node *node)
+{
+       return 0;
+}
 #endif
 
 int lttng_logger_init(void);
@@ -779,38 +807,12 @@ int lttng_kretprobes_event_enable_state(struct lttng_event *event,
 }
 #endif
 
-#ifdef CONFIG_DYNAMIC_FTRACE
-int lttng_ftrace_register(const char *name,
-                         const char *symbol_name,
-                         struct lttng_event *event);
-void lttng_ftrace_unregister(struct lttng_event *event);
-void lttng_ftrace_destroy_private(struct lttng_event *event);
-#else
-static inline
-int lttng_ftrace_register(const char *name,
-                         const char *symbol_name,
-                         struct lttng_event *event)
-{
-       return -ENOSYS;
-}
-
-static inline
-void lttng_ftrace_unregister(struct lttng_event *event)
-{
-}
-
-static inline
-void lttng_ftrace_destroy_private(struct lttng_event *event)
-{
-}
-#endif
-
 int lttng_calibrate(struct lttng_kernel_calibrate *calibrate);
 
 extern const struct file_operations lttng_tracepoint_list_fops;
 extern const struct file_operations lttng_syscall_list_fops;
 
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(2,6,35))
 #define TRACEPOINT_HAS_DATA_ARG
 #endif
 
This page took 0.02516 seconds and 4 git commands to generate.