struct lttng_channel: split protocol ABI from instrumentation ABI
[lttng-ust.git] / libringbuffer / frontend_types.h
index 01fdaccfce73a619393316bc47e257ae2e69f320..835647683ba78e8d1a9e642dd922f17f98c4cd7c 100644 (file)
@@ -52,13 +52,14 @@ struct lttng_ust_lib_ring_buffer_channel {
        int read_timer_enabled;
 
        int finalized;                          /* Has channel been finalized */
-       size_t priv_data_offset;
+       size_t priv_data_offset;                /* Offset of private data channel config */
        unsigned int nr_streams;                /* Number of streams */
        struct lttng_ust_shm_handle *handle;
        /* Extended options. */
        union {
                struct {
                        int32_t blocking_timeout_ms;
+                       void *priv;             /* Private data pointer. */
                } s;
                char padding[RB_CHANNEL_PADDING];
        } u;
@@ -223,11 +224,23 @@ struct lttng_ust_lib_ring_buffer {
 } __attribute__((aligned(CAA_CACHE_LINE_SIZE)));
 
 static inline
-void *channel_get_private(struct lttng_ust_lib_ring_buffer_channel *chan)
+void *channel_get_private_config(struct lttng_ust_lib_ring_buffer_channel *chan)
 {
        return ((char *) chan) + chan->priv_data_offset;
 }
 
+static inline
+void *channel_get_private(struct lttng_ust_lib_ring_buffer_channel *chan)
+{
+       return chan->u.s.priv;
+}
+
+static inline
+void channel_set_private(struct lttng_ust_lib_ring_buffer_channel *chan, void *priv)
+{
+       chan->u.s.priv = priv;
+}
+
 #ifndef __rb_same_type
 #define __rb_same_type(a, b)   __builtin_types_compatible_p(typeof(a), typeof(b))
 #endif
This page took 0.023762 seconds and 4 git commands to generate.