X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=liblttng-ust%2Flttng-events.c;h=625d98af7e8a7d5549da43f0860a3a53fc97dd01;hb=a084756d092167324ee09d3f819cc45407b58233;hp=762395d657330b0aca25959661d8d2ebe587bb53;hpb=891d6b550bf16672b0c3a7b35362f231d6e10fc1;p=lttng-ust.git diff --git a/liblttng-ust/lttng-events.c b/liblttng-ust/lttng-events.c index 762395d6..625d98af 100644 --- a/liblttng-ust/lttng-events.c +++ b/liblttng-ust/lttng-events.c @@ -74,9 +74,9 @@ static void _lttng_event_destroy(struct lttng_ust_event_common *event); static void _lttng_enum_destroy(struct lttng_enum *_enum); static -void lttng_session_lazy_sync_event_enablers(struct lttng_session *session); +void lttng_session_lazy_sync_event_enablers(struct lttng_ust_session *session); static -void lttng_session_sync_event_enablers(struct lttng_session *session); +void lttng_session_sync_event_enablers(struct lttng_ust_session *session); static void lttng_event_notifier_group_sync_enablers( struct lttng_event_notifier_group *event_notifier_group); @@ -127,16 +127,16 @@ int lttng_loglevel_match(int loglevel, } } -struct lttng_session *lttng_session_create(void) +struct lttng_ust_session *lttng_session_create(void) { - struct lttng_session *session; + struct lttng_ust_session *session; struct lttng_ust_session_private *session_priv; int i; - session = zmalloc(sizeof(struct lttng_session)); + session = zmalloc(sizeof(struct lttng_ust_session)); if (!session) return NULL; - session->struct_size = sizeof(struct lttng_session); + session->struct_size = sizeof(struct lttng_ust_session); session_priv = zmalloc(sizeof(struct lttng_ust_session_private)); if (!session_priv) { free(session); @@ -232,7 +232,7 @@ struct lttng_event_notifier_group *lttng_event_notifier_group_create(void) static void _lttng_channel_unmap(struct lttng_channel *lttng_chan) { - struct channel *chan; + struct lttng_ust_lib_ring_buffer_channel *chan; struct lttng_ust_shm_handle *handle; cds_list_del(<tng_chan->node); @@ -250,11 +250,11 @@ static void register_event(struct lttng_ust_event_common *event) { int ret; - const struct lttng_ust_event_desc *desc; + struct lttng_ust_event_desc *desc; assert(event->priv->registered == 0); desc = event->priv->desc; - ret = __tracepoint_probe_register_queue_release(desc->name, + ret = lttng_ust_tp_probe_register_queue_release(desc->name, desc->probe_callback, event, desc->signature); WARN_ON_ONCE(ret); @@ -266,11 +266,11 @@ static void unregister_event(struct lttng_ust_event_common *event) { int ret; - const struct lttng_ust_event_desc *desc; + struct lttng_ust_event_desc *desc; assert(event->priv->registered == 1); desc = event->priv->desc; - ret = __tracepoint_probe_unregister_queue_release(desc->name, + ret = lttng_ust_tp_probe_unregister_queue_release(desc->name, desc->probe_callback, event); WARN_ON_ONCE(ret); @@ -285,7 +285,7 @@ void _lttng_event_unregister(struct lttng_ust_event_common *event) unregister_event(event); } -void lttng_session_destroy(struct lttng_session *session) +void lttng_session_destroy(struct lttng_ust_session *session) { struct lttng_channel *chan, *tmpchan; struct lttng_ust_event_recorder_private *event_recorder_priv, *tmpevent_recorder_priv; @@ -297,7 +297,7 @@ void lttng_session_destroy(struct lttng_session *session) _lttng_event_unregister(event_recorder_priv->parent.pub); } lttng_ust_urcu_synchronize_rcu(); /* Wait for in-flight events to complete */ - __tracepoint_probe_prune_release_queue(); + lttng_ust_tp_probe_prune_release_queue(); cds_list_for_each_entry_safe(event_enabler, event_tmpenabler, &session->priv->enablers_head, node) lttng_event_enabler_destroy(event_enabler); @@ -398,8 +398,8 @@ void lttng_enabler_destroy(struct lttng_enabler *enabler) } static -int lttng_enum_create(const struct lttng_ust_enum_desc *desc, - struct lttng_session *session) +int lttng_enum_create(struct lttng_ust_enum_desc *desc, + struct lttng_ust_session *session) { const char *enum_name = desc->name; struct lttng_enum *_enum; @@ -456,16 +456,16 @@ exist: } static -int lttng_create_enum_check(const struct lttng_type *type, - struct lttng_session *session) +int lttng_create_enum_check(struct lttng_ust_type_common *type, + struct lttng_ust_session *session) { - switch (type->atype) { - case atype_enum_nestable: + switch (type->type) { + case lttng_ust_type_enum: { - const struct lttng_ust_enum_desc *enum_desc; + struct lttng_ust_enum_desc *enum_desc; int ret; - enum_desc = type->u.enum_nestable.desc; + enum_desc = lttng_ust_get_type_enum(type)->desc; ret = lttng_enum_create(enum_desc, session); if (ret && ret != -EEXIST) { DBG("Unable to create enum error: (%d)", ret); @@ -473,14 +473,14 @@ int lttng_create_enum_check(const struct lttng_type *type, } break; } - case atype_dynamic: + case lttng_ust_type_dynamic: { - const struct lttng_ust_event_field *tag_field_generic; - const struct lttng_ust_enum_desc *enum_desc; + struct lttng_ust_event_field *tag_field_generic; + struct lttng_ust_enum_desc *enum_desc; int ret; tag_field_generic = lttng_ust_dynamic_type_tag_field(); - enum_desc = tag_field_generic->type.u.enum_nestable.desc; + enum_desc = lttng_ust_get_type_enum(tag_field_generic->type)->desc; ret = lttng_enum_create(enum_desc, session); if (ret && ret != -EEXIST) { DBG("Unable to create enum error: (%d)", ret); @@ -497,15 +497,15 @@ int lttng_create_enum_check(const struct lttng_type *type, static int lttng_create_all_event_enums(size_t nr_fields, - const struct lttng_ust_event_field **event_fields, - struct lttng_session *session) + struct lttng_ust_event_field **event_fields, + struct lttng_ust_session *session) { size_t i; int ret; /* For each field, ensure enum is part of the session. */ for (i = 0; i < nr_fields; i++) { - const struct lttng_type *type = &event_fields[i]->type; + struct lttng_ust_type_common *type = event_fields[i]->type; ret = lttng_create_enum_check(type, session); if (ret) @@ -516,15 +516,15 @@ int lttng_create_all_event_enums(size_t nr_fields, static int lttng_create_all_ctx_enums(size_t nr_fields, - const struct lttng_ctx_field *ctx_fields, - struct lttng_session *session) + struct lttng_ust_ctx_field **ctx_fields, + struct lttng_ust_session *session) { size_t i; int ret; /* For each field, ensure enum is part of the session. */ for (i = 0; i < nr_fields; i++) { - const struct lttng_type *type = &ctx_fields[i].event_field.type; + struct lttng_ust_type_common *type = ctx_fields[i]->event_field->type; ret = lttng_create_enum_check(type, session); if (ret) @@ -537,14 +537,14 @@ int lttng_create_all_ctx_enums(size_t nr_fields, * Ensure that a state-dump will be performed for this session at the end * of the current handle_message(). */ -int lttng_session_statedump(struct lttng_session *session) +int lttng_session_statedump(struct lttng_ust_session *session) { session->priv->statedump_pending = 1; lttng_ust_sockinfo_session_enabled(session->priv->owner); return 0; } -int lttng_session_enable(struct lttng_session *session) +int lttng_session_enable(struct lttng_ust_session *session) { int ret = 0; struct lttng_channel *chan; @@ -570,8 +570,8 @@ int lttng_session_enable(struct lttng_session *session) * we need to use. */ cds_list_for_each_entry(chan, &session->priv->chan_head, node) { - const struct lttng_ctx *ctx; - const struct lttng_ctx_field *fields = NULL; + struct lttng_ust_ctx *ctx; + struct lttng_ust_ctx_field **fields = NULL; size_t nr_fields = 0; uint32_t chan_id; @@ -619,7 +619,7 @@ end: return ret; } -int lttng_session_disable(struct lttng_session *session) +int lttng_session_disable(struct lttng_ust_session *session) { int ret = 0; @@ -675,7 +675,7 @@ static inline struct cds_hlist_head *borrow_hash_table_bucket( struct cds_hlist_head *hash_table, unsigned int hash_table_size, - const struct lttng_ust_event_desc *desc) + struct lttng_ust_event_desc *desc) { const char *event_name; size_t name_len; @@ -692,12 +692,12 @@ struct cds_hlist_head *borrow_hash_table_bucket( * Supports event creation while tracing session is active. */ static -int lttng_event_recorder_create(const struct lttng_ust_event_desc *desc, +int lttng_event_recorder_create(struct lttng_ust_event_desc *desc, struct lttng_channel *chan) { struct lttng_ust_event_recorder *event_recorder; struct lttng_ust_event_recorder_private *event_recorder_priv; - struct lttng_session *session = chan->session; + struct lttng_ust_session *session = chan->session; struct cds_hlist_head *head; int ret = 0; int notify_socket, loglevel; @@ -800,7 +800,7 @@ socket_error: } static -int lttng_event_notifier_create(const struct lttng_ust_event_desc *desc, +int lttng_event_notifier_create(struct lttng_ust_event_desc *desc, uint64_t token, uint64_t error_counter_index, struct lttng_event_notifier_group *event_notifier_group) { @@ -872,7 +872,7 @@ error: } static -int lttng_desc_match_star_glob_enabler(const struct lttng_ust_event_desc *desc, +int lttng_desc_match_star_glob_enabler(struct lttng_ust_event_desc *desc, struct lttng_enabler *enabler) { int loglevel = 0; @@ -895,7 +895,7 @@ int lttng_desc_match_star_glob_enabler(const struct lttng_ust_event_desc *desc, } static -int lttng_desc_match_event_enabler(const struct lttng_ust_event_desc *desc, +int lttng_desc_match_event_enabler(struct lttng_ust_event_desc *desc, struct lttng_enabler *enabler) { int loglevel = 0; @@ -917,7 +917,7 @@ int lttng_desc_match_event_enabler(const struct lttng_ust_event_desc *desc, } static -int lttng_desc_match_enabler(const struct lttng_ust_event_desc *desc, +int lttng_desc_match_enabler(struct lttng_ust_event_desc *desc, struct lttng_enabler *enabler) { switch (enabler->format_type) { @@ -1004,9 +1004,9 @@ struct lttng_enabler_ref *lttng_enabler_ref( static void lttng_create_event_recorder_if_missing(struct lttng_event_enabler *event_enabler) { - struct lttng_session *session = event_enabler->chan->session; + struct lttng_ust_session *session = event_enabler->chan->session; struct lttng_ust_probe_desc *probe_desc; - const struct lttng_ust_event_desc *desc; + struct lttng_ust_event_desc *desc; struct lttng_ust_event_recorder_private *event_recorder_priv; int i; struct cds_list_head *probe_list; @@ -1073,7 +1073,7 @@ void probe_provider_event_for_each(struct lttng_ust_probe_desc *provider_desc, * sessions to queue the unregistration of the events. */ for (i = 0; i < provider_desc->nr_events; i++) { - const struct lttng_ust_event_desc *event_desc; + struct lttng_ust_event_desc *event_desc; struct lttng_event_notifier_group *event_notifier_group; struct lttng_ust_event_recorder_private *event_recorder_priv; struct lttng_ust_event_notifier_private *event_notifier_priv; @@ -1135,19 +1135,19 @@ void _event_enum_destroy(struct lttng_ust_event_common *event) case LTTNG_UST_EVENT_TYPE_RECORDER: { struct lttng_ust_event_recorder *event_recorder = event->child; - struct lttng_session *session = event_recorder->chan->session; + struct lttng_ust_session *session = event_recorder->chan->session; unsigned int i; /* Destroy enums of the current event. */ for (i = 0; i < event_recorder->parent->priv->desc->nr_fields; i++) { - const struct lttng_ust_enum_desc *enum_desc; - const struct lttng_ust_event_field *field; + struct lttng_ust_enum_desc *enum_desc; + struct lttng_ust_event_field *field; struct lttng_enum *curr_enum; field = event_recorder->parent->priv->desc->fields[i]; - switch (field->type.atype) { - case atype_enum_nestable: - enum_desc = field->type.u.enum_nestable.desc; + switch (field->type->type) { + case lttng_ust_type_enum: + enum_desc = lttng_ust_get_type_enum(field->type)->desc; break; default: continue; @@ -1186,7 +1186,7 @@ void lttng_probe_provider_unregister_events( /* Wait for grace period. */ lttng_ust_urcu_synchronize_rcu(); /* Prune the unregistration queue. */ - __tracepoint_probe_prune_release_queue(); + lttng_ust_tp_probe_prune_release_queue(); /* * It is now safe to destroy the events and remove them from the event list @@ -1202,7 +1202,7 @@ void lttng_probe_provider_unregister_events( static int lttng_event_enabler_ref_event_recorders(struct lttng_event_enabler *event_enabler) { - struct lttng_session *session = event_enabler->chan->session; + struct lttng_ust_session *session = event_enabler->chan->session; struct lttng_ust_event_recorder_private *event_recorder_priv; if (!lttng_event_enabler_as_enabler(event_enabler)->enabled) @@ -1546,7 +1546,7 @@ int lttng_event_notifier_enabler_attach_exclusion( int lttng_attach_context(struct lttng_ust_abi_context *context_param, union lttng_ust_abi_args *uargs, - struct lttng_ctx **ctx, struct lttng_session *session) + struct lttng_ust_ctx **ctx, struct lttng_ust_session *session) { /* * We cannot attach a context after trace has been started for a @@ -1640,7 +1640,7 @@ void lttng_event_enabler_destroy(struct lttng_event_enabler *event_enabler) * session. */ static -void lttng_session_sync_event_enablers(struct lttng_session *session) +void lttng_session_sync_event_enablers(struct lttng_ust_session *session) { struct lttng_event_enabler *event_enabler; struct lttng_ust_event_recorder_private *event_recorder_priv; @@ -1654,7 +1654,7 @@ void lttng_session_sync_event_enablers(struct lttng_session *session) */ cds_list_for_each_entry(event_recorder_priv, &session->priv->events_head, node) { struct lttng_enabler_ref *enabler_ref; - struct lttng_bytecode_runtime *runtime; + struct lttng_ust_bytecode_runtime *runtime; int enabled = 0, has_enablers_without_bytecode = 0; /* Enable events */ @@ -1703,7 +1703,7 @@ void lttng_session_sync_event_enablers(struct lttng_session *session) lttng_bytecode_filter_sync_state(runtime); } } - __tracepoint_probe_prune_release_queue(); + lttng_ust_tp_probe_prune_release_queue(); } /* Support for event notifier is introduced by probe provider major version 2. */ @@ -1728,7 +1728,7 @@ void lttng_create_event_notifier_if_missing( for (i = 0; i < probe_desc->nr_events; i++) { int ret; bool found = false; - const struct lttng_ust_event_desc *desc; + struct lttng_ust_event_desc *desc; struct lttng_ust_event_notifier_private *event_notifier_priv; struct cds_hlist_head *head; struct cds_hlist_node *node; @@ -1872,7 +1872,7 @@ void lttng_event_notifier_group_sync_enablers(struct lttng_event_notifier_group */ cds_list_for_each_entry(event_notifier_priv, &event_notifier_group->event_notifiers_head, node) { struct lttng_enabler_ref *enabler_ref; - struct lttng_bytecode_runtime *runtime; + struct lttng_ust_bytecode_runtime *runtime; int enabled = 0, has_enablers_without_bytecode = 0; /* Enable event_notifiers */ @@ -1921,7 +1921,7 @@ void lttng_event_notifier_group_sync_enablers(struct lttng_event_notifier_group lttng_bytecode_capture_sync_state(runtime); } } - __tracepoint_probe_prune_release_queue(); + lttng_ust_tp_probe_prune_release_queue(); } /* @@ -1931,7 +1931,7 @@ void lttng_event_notifier_group_sync_enablers(struct lttng_event_notifier_group * "lazy" sync means we only sync if required. */ static -void lttng_session_lazy_sync_event_enablers(struct lttng_session *session) +void lttng_session_lazy_sync_event_enablers(struct lttng_ust_session *session) { /* We can skip if session is not active */ if (!session->active) @@ -1947,12 +1947,12 @@ void lttng_session_lazy_sync_event_enablers(struct lttng_session *session) * context (either app context callbacks, or dummy callbacks). */ void lttng_ust_context_set_session_provider(const char *name, - size_t (*get_size)(struct lttng_ctx_field *field, size_t offset), - void (*record)(struct lttng_ctx_field *field, + size_t (*get_size)(struct lttng_ust_ctx_field *field, size_t offset), + void (*record)(struct lttng_ust_ctx_field *field, struct lttng_ust_lib_ring_buffer_ctx *ctx, struct lttng_channel *chan), - void (*get_value)(struct lttng_ctx_field *field, - struct lttng_ctx_value *value)) + void (*get_value)(struct lttng_ust_ctx_field *field, + struct lttng_ust_ctx_value *value)) { struct lttng_ust_session_private *session_priv; @@ -1988,12 +1988,12 @@ void lttng_ust_context_set_session_provider(const char *name, * context (either app context callbacks, or dummy callbacks). */ void lttng_ust_context_set_event_notifier_group_provider(const char *name, - size_t (*get_size)(struct lttng_ctx_field *field, size_t offset), - void (*record)(struct lttng_ctx_field *field, + size_t (*get_size)(struct lttng_ust_ctx_field *field, size_t offset), + void (*record)(struct lttng_ust_ctx_field *field, struct lttng_ust_lib_ring_buffer_ctx *ctx, struct lttng_channel *chan), - void (*get_value)(struct lttng_ctx_field *field, - struct lttng_ctx_value *value)) + void (*get_value)(struct lttng_ust_ctx_field *field, + struct lttng_ust_ctx_value *value)) { struct lttng_event_notifier_group *event_notifier_group;