X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=liblttng-ust%2Fust-events-internal.h;h=44d605c666141071e87aa4b947aeb4b804603908;hb=a880bae51b3d8e927f68ceae2804636976bd62d8;hp=01b13c4400d678b8996c81380bff8513a1661587;hpb=ddabe860f4cf41a4206a8157d83e6b9354f85cb5;p=lttng-ust.git diff --git a/liblttng-ust/ust-events-internal.h b/liblttng-ust/ust-events-internal.h index 01b13c44..44d605c6 100644 --- a/liblttng-ust/ust-events-internal.h +++ b/liblttng-ust/ust-events-internal.h @@ -14,8 +14,10 @@ #include +#include "ust-context-provider.h" struct lttng_ust_abi_obj; +struct lttng_event_notifier_group; union lttng_ust_abi_args { struct { @@ -78,7 +80,7 @@ struct lttng_event_enabler { * Unused, but kept around to make it explicit that the tracer can do * it. */ - struct lttng_ctx *ctx; + struct lttng_ust_ctx *ctx; }; struct lttng_event_notifier_enabler { @@ -219,7 +221,7 @@ struct lttng_event_notifier_group { struct cds_list_head enablers_head; struct cds_list_head event_notifiers_head; /* list of event_notifiers */ struct lttng_ust_event_notifier_ht event_notifiers_ht; /* hashtable of event_notifiers */ - struct lttng_ctx *ctx; /* contexts for filters. */ + struct lttng_ust_ctx *ctx; /* contexts for filters. */ struct lttng_counter *error_counter; size_t error_counter_len; @@ -277,11 +279,11 @@ struct lttng_ust_bytecode_runtime_private { * Pointer to a URCU-protected pointer owned by an `struct * lttng_session`or `struct lttng_event_notifier_group`. */ - struct lttng_ctx **pctx; + struct lttng_ust_ctx **pctx; }; struct lttng_ust_session_private { - struct lttng_session *pub; /* Public session interface */ + struct lttng_ust_session *pub; /* Public session interface */ int been_active; /* Been active ? */ int objd; /* Object associated */ @@ -302,17 +304,43 @@ struct lttng_ust_session_private { /* New UST 2.8 */ struct lttng_ust_enum_ht enums_ht; /* ht of enumerations */ struct cds_list_head enums_head; - struct lttng_ctx *ctx; /* contexts for filters. */ + struct lttng_ust_ctx *ctx; /* contexts for filters. */ }; struct lttng_enum { const struct lttng_ust_enum_desc *desc; - struct lttng_session *session; + struct lttng_ust_session *session; struct cds_list_head node; /* Enum list in session */ struct cds_hlist_node hlist; /* Session ht of enums */ uint64_t id; /* Enumeration ID in sessiond */ }; +struct lttng_ust_channel_ops_private { + struct lttng_ust_channel_ops *pub; /* Public channels ops interface */ + + struct lttng_channel *(*channel_create)(const char *name, + void *buf_addr, + size_t subbuf_size, size_t num_subbuf, + unsigned int switch_timer_interval, + unsigned int read_timer_interval, + unsigned char *uuid, + uint32_t chan_id, + const int *stream_fds, int nr_stream_fds, + int64_t blocking_timeout); + void (*channel_destroy)(struct lttng_channel *chan); + /* + * packet_avail_size returns the available size in the current + * packet. Note that the size returned is only a hint, since it + * may change due to concurrent writes. + */ + size_t (*packet_avail_size)(struct lttng_ust_lib_ring_buffer_channel *chan, + struct lttng_ust_shm_handle *handle); + int (*is_finalized)(struct lttng_ust_lib_ring_buffer_channel *chan); + int (*is_disabled)(struct lttng_ust_lib_ring_buffer_channel *chan); + int (*flush_buffer)(struct lttng_ust_lib_ring_buffer_channel *chan, + struct lttng_ust_shm_handle *handle); +}; + static inline struct lttng_enabler *lttng_event_enabler_as_enabler( struct lttng_event_enabler *event_enabler) @@ -394,7 +422,7 @@ int lttng_event_enabler_attach_exclusion(struct lttng_event_enabler *enabler, */ __attribute__((visibility("hidden"))) void lttng_enabler_link_bytecode(const struct lttng_ust_event_desc *event_desc, - struct lttng_ctx **ctx, + struct lttng_ust_ctx **ctx, struct cds_list_head *instance_bytecode_runtime_head, struct cds_list_head *enabler_bytecode_runtime_head); @@ -497,7 +525,7 @@ __attribute__((visibility("hidden"))) int lttng_add_perf_counter_to_ctx(uint32_t type, uint64_t config, const char *name, - struct lttng_ctx **ctx); + struct lttng_ust_ctx **ctx); __attribute__((visibility("hidden"))) int lttng_perf_counter_init(void); @@ -511,7 +539,7 @@ static inline int lttng_add_perf_counter_to_ctx(uint32_t type, uint64_t config, const char *name, - struct lttng_ctx **ctx) + struct lttng_ust_ctx **ctx) { return -ENOSYS; } @@ -547,19 +575,25 @@ struct lttng_ust_abi_field_iter * lttng_ust_field_list_get_iter_next(struct lttng_ust_field_list *list); __attribute__((visibility("hidden"))) -struct lttng_session *lttng_session_create(void); +struct lttng_ust_session *lttng_session_create(void); + +__attribute__((visibility("hidden"))) +int lttng_session_enable(struct lttng_ust_session *session); __attribute__((visibility("hidden"))) -int lttng_session_enable(struct lttng_session *session); +int lttng_session_disable(struct lttng_ust_session *session); __attribute__((visibility("hidden"))) -int lttng_session_disable(struct lttng_session *session); +int lttng_session_statedump(struct lttng_ust_session *session); __attribute__((visibility("hidden"))) -int lttng_session_statedump(struct lttng_session *session); +void lttng_session_destroy(struct lttng_ust_session *session); +/* + * Called with ust lock held. + */ __attribute__((visibility("hidden"))) -void lttng_session_destroy(struct lttng_session *session); +int lttng_session_active(void); __attribute__((visibility("hidden"))) struct cds_list_head *lttng_get_sessions(void); @@ -568,7 +602,7 @@ __attribute__((visibility("hidden"))) void lttng_handle_pending_statedump(void *owner); __attribute__((visibility("hidden"))) -struct lttng_channel *lttng_channel_create(struct lttng_session *session, +struct lttng_channel *lttng_channel_create(struct lttng_ust_session *session, const char *transport_name, void *buf_addr, size_t subbuf_size, size_t num_subbuf, @@ -590,6 +624,12 @@ void lttng_transport_register(struct lttng_transport *transport); __attribute__((visibility("hidden"))) void lttng_transport_unregister(struct lttng_transport *transport); +/* This is ABI between liblttng-ust and liblttng-ust-ctl */ +struct lttng_transport *lttng_ust_transport_find(const char *name); + +/* This is ABI between liblttng-ust and liblttng-ust-dl */ +void lttng_ust_dl_update(void *ip); + __attribute__((visibility("hidden"))) void lttng_probe_provider_unregister_events(struct lttng_ust_probe_desc *desc); @@ -600,7 +640,7 @@ __attribute__((visibility("hidden"))) struct cds_list_head *lttng_get_probe_list_head(void); __attribute__((visibility("hidden"))) -struct lttng_enum *lttng_ust_enum_get_from_desc(struct lttng_session *session, +struct lttng_enum *lttng_ust_enum_get_from_desc(struct lttng_ust_session *session, const struct lttng_ust_enum_desc *enum_desc); __attribute__((visibility("hidden")))