To remain backward compatible with Babeltrace 1's CTF writer,
automatically set the event header `timestamp` fields (when appending
the event) and packet context `timestamp_begin` and `timestamp_end`
fields (on stream flush) when the stream's class has a registered CTF
writer clock, even if the field's types are not mapped to a clock class.
If the field is mapped to a clock class, then it is automatically set
when this mapped clock class is the same as the stream's class's clock's
class.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
field_mapped_clock_class =
bt_field_type_integer_get_mapped_clock_class(field->type);
field_mapped_clock_class =
bt_field_type_integer_get_mapped_clock_class(field->type);
- if (!field_mapped_clock_class) {
- BT_LOGV("Packet context's `%s` field's type is not mapped to a clock class: skipping: "
- "stream-addr=%p, stream-name=\"%s\", "
- "field-addr=%p, ft-addr=%p", field_name,
- stream, bt_stream_get_name(stream),
- field, field->type);
- goto end;
- }
-
- if (field_mapped_clock_class !=
+ if (field_mapped_clock_class && field_mapped_clock_class !=
stream->stream_class->clock->clock_class) {
BT_LOGV("Packet context's `%s` field's type is not mapped to the stream's clock's class: skipping: "
"stream-addr=%p, stream-name=\"%s\", "
stream->stream_class->clock->clock_class) {
BT_LOGV("Packet context's `%s` field's type is not mapped to the stream's clock's class: skipping: "
"stream-addr=%p, stream-name=\"%s\", "
mapped_clock_class =
bt_field_type_integer_get_mapped_clock_class(
timestamp_field->type);
mapped_clock_class =
bt_field_type_integer_get_mapped_clock_class(
timestamp_field->type);
- if (mapped_clock_class == stream_class_clock_class) {
+ if (!mapped_clock_class ||
+ mapped_clock_class == stream_class_clock_class) {
uint64_t timestamp;
ret = bt_ctf_clock_get_value(
uint64_t timestamp;
ret = bt_ctf_clock_get_value(