Fix: pad strings that are modified concurrently with tracing
[lttng-ust.git] / include / lttng / ust-events.h
index 329ed3a8ecf34bccd0eec2a62709f185334f9c99..3d473407613b85f312cfc3b33dae15f59d4a5b9d 100644 (file)
 #include <lttng/ust-endian.h>
 #include <float.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 #define LTTNG_UST_UUID_LEN             16
 
 /*
@@ -301,6 +305,8 @@ struct lttng_enabler {
 
        /* head list of struct lttng_ust_filter_bytecode_node */
        struct cds_list_head filter_bytecode_head;
+       /* head list of struct lttng_ust_excluder_node */
+       struct cds_list_head excluder_head;
        struct cds_list_head node;      /* per-session list of enablers */
 
        struct lttng_ust_event event_param;
@@ -342,6 +348,15 @@ struct lttng_ust_filter_bytecode_node {
        struct lttng_ust_filter_bytecode bc;
 };
 
+struct lttng_ust_excluder_node {
+       struct cds_list_head node;
+       struct lttng_enabler *enabler;
+       /*
+        * struct lttng_ust_event_exclusion had variable sized array,
+        * must be last field.
+        */
+       struct lttng_ust_event_exclusion excluder;
+};
 /*
  * Filter return value masks.
  */
@@ -418,7 +433,10 @@ struct lttng_channel_ops {
                        unsigned char *uuid,
                        uint32_t chan_id);
        void (*channel_destroy)(struct lttng_channel *chan);
-       void *_deprecated1;
+       union {
+               void *_deprecated1;
+               unsigned long has_strcpy:1;             /* ABI has strcpy */
+       } u;
        void *_deprecated2;
        int (*event_reserve)(struct lttng_ust_lib_ring_buffer_ctx *ctx,
                             uint32_t event_id);
@@ -437,6 +455,8 @@ struct lttng_channel_ops {
        int (*is_finalized)(struct channel *chan);
        int (*is_disabled)(struct channel *chan);
        int (*flush_buffer)(struct channel *chan, struct lttng_ust_shm_handle *handle);
+       void (*event_strcpy)(struct lttng_ust_lib_ring_buffer_ctx *ctx,
+                       const char *src, size_t len);
 };
 
 /*
@@ -502,6 +522,9 @@ struct lttng_session {
        struct lttng_ust_event_ht events_ht;    /* ht of events */
        void *owner;                            /* object owner */
        int tstate:1;                           /* Transient enable state */
+
+       /* New UST 2.4 */
+       int statedump_pending:1;
 };
 
 struct lttng_transport {
@@ -538,12 +561,14 @@ int lttng_enabler_attach_bytecode(struct lttng_enabler *enabler,
                struct lttng_ust_filter_bytecode_node *bytecode);
 int lttng_enabler_attach_context(struct lttng_enabler *enabler,
                struct lttng_ust_context *ctx);
+int lttng_enabler_attach_exclusion(struct lttng_enabler *enabler,
+               struct lttng_ust_excluder_node *excluder);
 
 int lttng_attach_context(struct lttng_ust_context *context_param,
                struct lttng_ctx **ctx, struct lttng_session *session);
 void lttng_context_init(void);
 void lttng_context_exit(void);
-struct lttng_ctx *lttng_static_ctx;    /* Used by filtering */
+extern struct lttng_ctx *lttng_static_ctx;     /* Used by filtering */
 
 void lttng_transport_register(struct lttng_transport *transport);
 void lttng_transport_unregister(struct lttng_transport *transport);
@@ -565,12 +590,13 @@ 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);
+int lttng_add_ip_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;
+extern const struct lttng_ust_client_lib_ring_buffer_client_cb *lttng_client_callbacks_metadata;
+extern const struct lttng_ust_client_lib_ring_buffer_client_cb *lttng_client_callbacks_discard;
+extern const struct lttng_ust_client_lib_ring_buffer_client_cb *lttng_client_callbacks_overwrite;
 
 struct lttng_transport *lttng_transport_find(const char *name);
 
@@ -592,4 +618,12 @@ void lttng_filter_sync_state(struct lttng_bytecode_runtime *runtime);
 struct cds_list_head *lttng_get_probe_list_head(void);
 int lttng_session_active(void);
 
+typedef int (*t_statedump_func_ptr)(struct lttng_session *session);
+void lttng_handle_pending_statedump(void *owner);
+struct cds_list_head *_lttng_get_sessions(void);
+
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* _LTTNG_UST_EVENTS_H */
This page took 0.026475 seconds and 4 git commands to generate.