- int objd; /* Object associated to channel */
- struct cds_list_head node; /* Channel list in session */
- struct lttng_ust_channel_ops *ops;
- int header_type; /* 0: unset, 1: compact, 2: large */
- struct lttng_ust_shm_handle *handle; /* shared-memory handle */
-
- /* Channel ID */
- unsigned int id;
- enum lttng_ust_abi_chan_type type;
- unsigned char uuid[LTTNG_UST_UUID_LEN]; /* Trace session unique ID */
- int tstate:1; /* Transient enable state */
+
+ /* End of base ABI. Fields below should be used after checking struct_size. */
+};
+
+struct lttng_ust_channel_buffer_private;
+
+/*
+ * IMPORTANT: this structure is part of the ABI between the probe and
+ * UST. Fields need to be only added at the end, never reordered, never
+ * removed.
+ *
+ * The field @struct_size should be used to determine the size of the
+ * structure. It should be queried before using additional fields added
+ * at the end of the structure.
+ */
+struct lttng_ust_channel_buffer {
+ uint32_t struct_size; /* Size of this structure. */
+
+ struct lttng_ust_channel_common *parent; /* Inheritance by aggregation. */
+ struct lttng_ust_channel_buffer_private *priv; /* Private channel buffer interface */
+
+ struct lttng_ust_channel_buffer_ops *ops;
+
+ /* End of base ABI. Fields below should be used after checking struct_size. */