+struct lttng_probe_desc {
+ const struct lttng_event_desc *event_desc;
+ unsigned int nr_events;
+ struct list_head head; /* chain registered probes */
+};
+
+/*
+ * ltt_event structure is referred to by the tracing fast path. It must be
+ * kept small.
+ */
+struct ltt_event {
+ unsigned int id;
+ struct ltt_channel *chan;
+ const struct lttng_event_desc *desc;
+ void *filter;
+ enum instrum_type itype;
+ struct list_head list; /* Event list */
+};
+
+struct ltt_channel_ops {
+ struct channel *(*channel_create)(const char *name,
+ struct ltt_session *session,
+ void *buf_addr,
+ size_t subbuf_size, size_t num_subbuf,
+ unsigned int switch_timer_interval,
+ unsigned int read_timer_interval);
+ void (*channel_destroy)(struct channel *chan);
+ 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);
+ void (*event_commit)(struct lib_ring_buffer_ctx *ctx);
+ void (*event_write)(struct lib_ring_buffer_ctx *ctx, const void *src,
+ size_t len);
+};
+
+struct ltt_channel {
+ struct channel *chan; /* Channel buffers */
+ /* Event ID management */
+ struct ltt_session *session;
+ struct file *file; /* File associated to channel */
+ unsigned int free_event_id; /* Next event ID to allocate */
+ struct list_head list; /* Channel list */
+ wait_queue_head_t notify_wait; /* Channel addition notif. waitqueue */
+ struct ltt_channel_ops *ops;
+};
+
+struct ltt_session {
+ int active; /* Is trace session active ? */
+ struct file *file; /* File associated to session */
+ struct list_head chan; /* Channel list head */
+ struct list_head events; /* Event list head */
+ struct list_head list; /* Session list */
+};
+
+struct ltt_transport {
+ char *name;
+ struct module *owner;
+ struct list_head node;
+ struct ltt_channel_ops ops;
+};
+