{
auto locked_registry = reg_uid->registry->reg.ust->lock();
- auto& ust_reg_chan = locked_registry->get_channel(ua_chan->tracing_channel_id);
+ auto& ust_reg_chan = locked_registry->channel(ua_chan->tracing_channel_id);
ust_reg_chan._consumer_key = ua_chan->key;
}
{
auto locked_registry = registry->lock();
- auto& ust_reg_chan = locked_registry->get_channel(chan_reg_key);
+ auto& ust_reg_chan = locked_registry->channel(chan_reg_key);
ust_reg_chan._consumer_key = ua_chan->key;
}
chan_reg_key = ua_chan->key;
}
- auto& ust_reg_chan = locked_registry_session->get_channel(chan_reg_key);
+ auto& ust_reg_chan = locked_registry_session->channel(chan_reg_key);
/* Channel id is set during the object creation. */
chan_id = ust_reg_chan.id;
0, std::move(app_context_fields)) :
nullptr;
- ust_reg_chan.set_event_context(std::move(event_context));
+ ust_reg_chan.event_context(std::move(event_context));
} else {
/*
* Validate that the context fields match between
* registry and newcoming application.
*/
bool context_fields_match;
- const auto *previous_event_context = ust_reg_chan.get_event_context();
+ const auto *previous_event_context = ust_reg_chan.event_context();
if (!previous_event_context) {
context_fields_match = app_context_fields.size() == 0;
* These three variables MUST NOT be read/write after this.
*/
try {
- auto& channel = locked_registry->get_channel(chan_reg_key);
+ auto& channel = locked_registry->channel(chan_reg_key);
/* event_id is set on success. */
channel.add_event(sobjd, cobjd, name, signature.get(),
rcu_read_unlock();
return ret;
}
+
+lsu::ctl_field_quirks ust_app::ctl_field_quirks() const
+{
+ /*
+ * Application contexts are expressed as variants. LTTng-UST announces
+ * those by registering an enumeration named `..._tag`. It then registers a
+ * variant as part of the event context that contains the various possible
+ * types.
+ *
+ * Unfortunately, the names used in the enumeration and variant don't
+ * match: the enumeration names are all prefixed with an underscore while
+ * the variant type tag fields aren't.
+ *
+ * While the CTF 1.8.3 specification mentions that
+ * underscores *should* (not *must*) be removed by CTF readers. Babeltrace
+ * 1.x (and possibly others) expect a perfect match between the names used
+ * by tags and variants.
+ *
+ * When the UNDERSCORE_PREFIXED_VARIANT_TAG_MAPPINGS quirk is enabled,
+ * the variant's fields are modified to match the mappings of its tag.
+ *
+ * From ABI version >= 10.x, the variant fields and tag mapping names
+ * correctly match, making this quirk unnecessary.
+ */
+ return v_major <= 9 ? lsu::ctl_field_quirks::UNDERSCORE_PREFIXED_VARIANT_TAG_MAPPINGS :
+ lsu::ctl_field_quirks::NONE;
+}
\ No newline at end of file