Move struct ltt_channel to shm for consumer flush
[lttng-ust.git] / include / lttng / ust-events.h
index 95af893a6f5e73adc5810adff62e1c8181c2a9fc..5068a3b35c3c53acd3c51e0f345f8e8bfb838535 100644 (file)
@@ -23,6 +23,17 @@ struct ltt_channel;
 struct ltt_session;
 struct lttng_ust_lib_ring_buffer_ctx;
 
+/*
+ * LTTng client type enumeration. Used by the consumer to map the
+ * callbacks from its own address space.
+ */
+enum lttng_client_types {
+       LTTNG_CLIENT_METADATA = 0,
+       LTTNG_CLIENT_DISCARD = 1,
+       LTTNG_CLIENT_OVERWRITE = 2,
+       LTTNG_NR_CLIENT_TYPES,
+};
+
 /* Type description */
 
 /* Update the astract_types name table in lttng-types.c along with this enum */
@@ -205,7 +216,6 @@ struct lttng_ust_shm_handle;
 
 struct ltt_channel_ops {
        struct ltt_channel *(*channel_create)(const char *name,
-                               struct ltt_channel *ltt_chan,
                                void *buf_addr,
                                size_t subbuf_size, size_t num_subbuf,
                                unsigned int switch_timer_interval,
@@ -239,7 +249,12 @@ struct ltt_channel_ops {
 };
 
 struct ltt_channel {
-       unsigned int id;
+       /*
+        * The pointers located in this private data are NOT safe to be
+        * dereferenced by the consumer. The only operations the
+        * consumer process is designed to be allowed to do is to read
+        * and perform subbuffer flush.
+        */
        struct channel *chan;           /* Channel buffers */
        int enabled;
        struct lttng_ctx *ctx;
@@ -253,6 +268,11 @@ struct ltt_channel {
        int header_type;                /* 0: unset, 1: compact, 2: large */
        struct lttng_ust_shm_handle *handle;    /* shared-memory handle */
        int metadata_dumped:1;
+
+       /* Channel ID, available for consumer too */
+       unsigned int id;
+       /* Copy of session UUID for consumer (availability through shm) */
+       uuid_t uuid;                    /* Trace session unique ID */
 };
 
 struct ltt_session {
@@ -328,4 +348,11 @@ int lttng_add_procname_to_ctx(struct lttng_ctx **ctx);
 void lttng_context_vtid_reset(void);
 void lttng_context_vpid_reset(void);
 
+const struct lttng_ust_lib_ring_buffer_client_cb *lttng_client_callbacks_metadata;
+const struct lttng_ust_lib_ring_buffer_client_cb *lttng_client_callbacks_discard;
+const struct lttng_ust_lib_ring_buffer_client_cb *lttng_client_callbacks_overwrite;
+
+struct cds_list_head ltt_transport_list;
+struct ltt_transport *ltt_transport_find(const char *name);
+
 #endif /* _UST_LTTNG_EVENTS_H */
This page took 0.0284450000000001 seconds and 4 git commands to generate.