Update ftrace wrapper
[lttng-modules.git] / ltt-events.h
index 32c87358f635c9b380bce2b51fb13e1f0ebea044..31a50ca5f34968d0705e22885d30d54289d0db51 100644 (file)
@@ -119,6 +119,17 @@ struct lttng_event_field {
        struct lttng_type type;
 };
 
+/*
+ * We need to keep this perf counter field separately from struct
+ * lttng_ctx_field because cpu hotplug needs fixed-location addresses.
+ */
+struct lttng_perf_counter_field {
+       struct notifier_block nb;
+       int hp_enable;
+       struct perf_event_attr *attr;
+       struct perf_event **e;  /* per-cpu array */
+};
+
 struct lttng_ctx_field {
        struct lttng_event_field event_field;
        size_t (*get_size)(size_t offset);
@@ -126,12 +137,7 @@ struct lttng_ctx_field {
                       struct lib_ring_buffer_ctx *ctx,
                       struct ltt_channel *chan);
        union {
-               struct {
-                       struct perf_event **e;  /* per-cpu array */
-                       struct notifier_block nb;
-                       int hp_enable;
-                       struct perf_event_attr *attr;
-               } perf_counter;
+               struct lttng_perf_counter_field *perf_counter;
        } u;
        void (*destroy)(struct lttng_ctx_field *field);
 };
@@ -191,6 +197,7 @@ struct ltt_channel_ops {
                                unsigned int read_timer_interval);
        void (*channel_destroy)(struct channel *chan);
        struct lib_ring_buffer *(*buffer_read_open)(struct channel *chan);
+       int (*buffer_has_read_closed_stream)(struct channel *chan);
        void (*buffer_read_close)(struct lib_ring_buffer *buf);
        int (*event_reserve)(struct lib_ring_buffer_ctx *ctx,
                             uint32_t event_id);
@@ -209,6 +216,13 @@ struct ltt_channel_ops {
        int (*is_disabled)(struct channel *chan);
 };
 
+struct ltt_transport {
+       char *name;
+       struct module *owner;
+       struct list_head node;
+       struct ltt_channel_ops ops;
+};
+
 struct ltt_channel {
        unsigned int id;
        struct channel *chan;           /* Channel buffers */
@@ -220,6 +234,7 @@ struct ltt_channel {
        unsigned int free_event_id;     /* Next event ID to allocate */
        struct list_head list;          /* Channel list */
        struct ltt_channel_ops *ops;
+       struct ltt_transport *transport;
        int header_type;                /* 0: unset, 1: compact, 2: large */
        int metadata_dumped:1;
 };
@@ -237,13 +252,6 @@ struct ltt_session {
        int metadata_dumped:1;
 };
 
-struct ltt_transport {
-       char *name;
-       struct module *owner;
-       struct list_head node;
-       struct ltt_channel_ops ops;
-};
-
 struct ltt_session *ltt_session_create(void);
 int ltt_session_enable(struct ltt_session *session);
 int ltt_session_disable(struct ltt_session *session);
@@ -284,6 +292,7 @@ void ltt_event_put(const struct lttng_event_desc *desc);
 int ltt_probes_init(void);
 void ltt_probes_exit(void);
 struct lttng_ctx_field *lttng_append_context(struct lttng_ctx **ctx);
+int lttng_find_context(struct lttng_ctx *ctx, const char *name);
 void lttng_remove_context_field(struct lttng_ctx **ctx,
                                struct lttng_ctx_field *field);
 void lttng_destroy_context(struct lttng_ctx *ctx);
@@ -296,10 +305,21 @@ int lttng_add_tid_to_ctx(struct lttng_ctx **ctx);
 int lttng_add_vtid_to_ctx(struct lttng_ctx **ctx);
 int lttng_add_ppid_to_ctx(struct lttng_ctx **ctx);
 int lttng_add_vppid_to_ctx(struct lttng_ctx **ctx);
+#ifdef CONFIG_PERF_EVENTS
 int lttng_add_perf_counter_to_ctx(uint32_t type,
                                  uint64_t config,
                                  const char *name,
                                  struct lttng_ctx **ctx);
+#else
+static inline
+int lttng_add_perf_counter_to_ctx(uint32_t type,
+                                 uint64_t config,
+                                 const char *name,
+                                 struct lttng_ctx **ctx)
+{
+       return -ENOSYS;
+}
+#endif
 
 #ifdef CONFIG_KPROBES
 int lttng_kprobes_register(const char *name,
@@ -359,4 +379,8 @@ void lttng_ftrace_destroy_private(struct ltt_event *event)
 
 extern const struct file_operations lttng_tracepoint_list_fops;
 
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+#define TRACEPOINT_HAS_DATA_ARG
+#endif
+
 #endif /* _LTT_EVENTS_H */
This page took 0.023448 seconds and 4 git commands to generate.