Add context management infrastructure
[deliverable/lttng-modules.git] / ltt-events.h
index 859b43b7b6e7feca15f28940b0bada2cb2d2d6f1..bacef0a82e69c92f4dca34291a70db7426ccb86b 100644 (file)
@@ -45,7 +45,7 @@ struct lttng_enum_entry {
        const char *string;
 };
 
-#define __type_integer(_type, _byte_order, _base)              \
+#define __type_integer(_type, _byte_order, _base, _encoding)   \
        {                                                       \
            .atype = atype_integer,                             \
            .u.basic.integer =                                  \
@@ -55,7 +55,7 @@ struct lttng_enum_entry {
                  .signedness = is_signed_type(_type),          \
                  .reverse_byte_order = _byte_order != __BYTE_ORDER,    \
                  .base = _base,                                \
-                 .encoding = lttng_encode_none,                \
+                 .encoding = lttng_encode_##_encoding,         \
                },                                              \
        }                                                       \
 
@@ -125,6 +125,7 @@ struct lttng_ctx_field {
                        struct perf_event_attr *attr;
                } perf_counter;
        } u;
+       void (*destroy)(struct lttng_ctx_field *field);
 };
 
 struct lttng_ctx {
@@ -139,6 +140,7 @@ struct lttng_event_desc {
        const struct lttng_event_ctx *ctx;      /* context */
        const struct lttng_event_field *fields; /* event payload */
        unsigned int nr_fields;
+       struct module *owner;
 };
 
 struct lttng_probe_desc {
@@ -181,7 +183,7 @@ struct ltt_channel_ops {
        struct lib_ring_buffer *(*buffer_read_open)(struct channel *chan);
        void (*buffer_read_close)(struct lib_ring_buffer *buf);
        int (*event_reserve)(struct lib_ring_buffer_ctx *ctx,
-                            uint16_t event_id);
+                            uint32_t event_id);
        void (*event_commit)(struct lib_ring_buffer_ctx *ctx);
        void (*event_write)(struct lib_ring_buffer_ctx *ctx, const void *src,
                            size_t len);
@@ -260,6 +262,8 @@ const struct lttng_event_desc *ltt_event_get(const char *name);
 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);
+void lttng_destroy_context(struct lttng_ctx *ctx);
 
 #ifdef CONFIG_KPROBES
 int lttng_kprobes_register(const char *name,
@@ -268,6 +272,7 @@ int lttng_kprobes_register(const char *name,
                uint64_t addr,
                struct ltt_event *event);
 void lttng_kprobes_unregister(struct ltt_event *event);
+void lttng_kprobes_destroy_private(struct ltt_event *event);
 #else
 static inline
 int lttng_kprobes_register(const char *name,
@@ -283,6 +288,11 @@ static inline
 void lttng_kprobes_unregister(struct ltt_event *event)
 {
 }
+
+static inline
+void lttng_kprobes_destroy_private(struct ltt_event *event)
+{
+}
 #endif
 
 #ifdef CONFIG_DYNAMIC_FTRACE
@@ -290,6 +300,7 @@ int lttng_ftrace_register(const char *name,
                          const char *symbol_name,
                          struct ltt_event *event);
 void lttng_ftrace_unregister(struct ltt_event *event);
+void lttng_ftrace_destroy_private(struct ltt_event *event);
 #else
 static inline
 int lttng_ftrace_register(const char *name,
@@ -303,5 +314,13 @@ static inline
 void lttng_ftrace_unregister(struct ltt_event *event)
 {
 }
+
+static inline
+void lttng_ftrace_destroy_private(struct ltt_event *event)
+{
+}
 #endif
+
+extern const struct file_operations lttng_tracepoint_list_fops;
+
 #endif /* _LTT_EVENTS_H */
This page took 0.02549 seconds and 5 git commands to generate.