-struct ltt_session *ltt_session_create(void);
-int ltt_session_enable(struct ltt_session *session);
-int ltt_session_disable(struct ltt_session *session);
-void ltt_session_destroy(struct ltt_session *session);
-
-struct ltt_channel *ltt_channel_create(struct ltt_session *session,
- const char *transport_name,
- void *buf_addr,
- size_t subbuf_size, size_t num_subbuf,
- unsigned int switch_timer_interval,
- unsigned int read_timer_interval,
- int **shm_fd, int **wait_fd,
- uint64_t **memory_map_size,
- struct ltt_channel *chan_priv_init);
-struct ltt_channel *ltt_global_channel_create(struct ltt_session *session,
- int overwrite, void *buf_addr,
- size_t subbuf_size, size_t num_subbuf,
- unsigned int switch_timer_interval,
- unsigned int read_timer_interval,
- int **shm_fd, int **wait_fd,
- uint64_t **memory_map_size);
-
-int ltt_event_create(struct ltt_channel *chan,
- struct lttng_ust_event *event_param,
- struct ltt_event **event);
-
-int ltt_channel_enable(struct ltt_channel *channel);
-int ltt_channel_disable(struct ltt_channel *channel);
-int ltt_event_enable(struct ltt_event *event);
-int ltt_event_disable(struct ltt_event *event);
-
-void ltt_transport_register(struct ltt_transport *transport);
-void ltt_transport_unregister(struct ltt_transport *transport);
-
-void synchronize_trace(void);
-
-int ltt_probe_register(struct lttng_probe_desc *desc);
-void ltt_probe_unregister(struct lttng_probe_desc *desc);
-int pending_probe_fix_events(const struct lttng_event_desc *desc);
-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);
-int lttng_find_context(struct lttng_ctx *ctx, const char *name);
-struct lttng_ctx_field *lttng_append_context(struct lttng_ctx **ctx_p);
-void lttng_remove_context_field(struct lttng_ctx **ctx_p,
- struct lttng_ctx_field *field);
-void lttng_destroy_context(struct lttng_ctx *ctx);
-int lttng_add_vtid_to_ctx(struct lttng_ctx **ctx);
-int lttng_add_vpid_to_ctx(struct lttng_ctx **ctx);
-int lttng_add_pthread_id_to_ctx(struct lttng_ctx **ctx);
-int lttng_add_procname_to_ctx(struct lttng_ctx **ctx);
-void lttng_context_vtid_reset(void);
-void lttng_context_vpid_reset(void);
-
-extern const struct lttng_ust_lib_ring_buffer_client_cb *lttng_client_callbacks_metadata;
-extern const struct lttng_ust_lib_ring_buffer_client_cb *lttng_client_callbacks_discard;
-extern const struct lttng_ust_lib_ring_buffer_client_cb *lttng_client_callbacks_overwrite;
-
-struct ltt_transport *ltt_transport_find(const char *name);
-
-int ltt_probes_get_event_list(struct lttng_ust_tracepoint_list *list);
-void ltt_probes_prune_event_list(struct lttng_ust_tracepoint_list *list);
-struct lttng_ust_tracepoint_iter *
- lttng_ust_tracepoint_list_get_iter_next(struct lttng_ust_tracepoint_list *list);
-int ltt_probes_get_field_list(struct lttng_ust_field_list *list);
-void ltt_probes_prune_field_list(struct lttng_ust_field_list *list);
-struct lttng_ust_field_iter *
- lttng_ust_field_list_get_iter_next(struct lttng_ust_field_list *list);
-
-int ltt_wildcard_enable(struct session_wildcard *wildcard);
-int ltt_wildcard_disable(struct session_wildcard *wildcard);
-int ltt_wildcard_create(struct ltt_channel *chan,
- struct lttng_ust_event *event_param,
- struct session_wildcard **sl);
-int ltt_loglevel_match(const struct lttng_event_desc *desc,
- enum lttng_ust_loglevel_type req_type,
- int req_loglevel);
-void ltt_probes_create_wildcard_events(struct wildcard_entry *entry,
- struct session_wildcard *wildcard);
-int lttng_filter_event_attach_bytecode(struct ltt_event *event,
- struct lttng_ust_filter_bytecode *filter);
-int lttng_filter_wildcard_attach_bytecode(struct session_wildcard *wildcard,
- struct lttng_ust_filter_bytecode *filter);
-void lttng_filter_event_link_bytecode(struct ltt_event *event,
- struct lttng_ust_filter_bytecode *filter_bytecode);
-void lttng_filter_wildcard_link_bytecode(struct session_wildcard *wildcard);
+struct lttng_ust_session_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_session {
+ uint32_t struct_size; /* Size of this structure */
+
+ struct lttng_ust_session_private *priv; /* Private session interface */
+
+ int active; /* Is trace session active ? */
+
+ /* End of base ABI. Fields below should be used after checking struct_size. */
+};
+
+int lttng_ust_probe_register(struct lttng_ust_probe_desc *desc);
+void lttng_ust_probe_unregister(struct lttng_ust_probe_desc *desc);
+
+/*
+ * Applications that change their procname and need the new value to be
+ * reflected in the procname event context have to call this function to clear
+ * the internally cached value. This should not be called from a signal
+ * handler.
+ */
+void lttng_ust_context_procname_reset(void);
+
+#ifdef __cplusplus
+}
+#endif