const bt_field *bt_packet_borrow_context_field_const(
const bt_packet *packet);
-extern
-bt_clock_snapshot_state bt_packet_borrow_default_beginning_clock_snapshot_const(
- const bt_packet *packet,
- const bt_clock_snapshot **clock_snapshot);
-
-extern
-bt_clock_snapshot_state bt_packet_borrow_default_end_clock_snapshot_const(
- const bt_packet *packet,
- const bt_clock_snapshot **clock_snapshot);
-
-extern
-bt_property_availability bt_packet_get_discarded_event_counter_snapshot(
- const bt_packet *packet, uint64_t *value);
-
-extern
-bt_property_availability bt_packet_get_packet_counter_snapshot(
- const bt_packet *packet, uint64_t *value);
-
extern void bt_packet_get_ref(const bt_packet *packet);
extern void bt_packet_put_ref(const bt_packet *packet);
struct bt_object base;
struct bt_field_wrapper *context_field;
struct bt_stream *stream;
- struct bt_clock_snapshot *default_beginning_cs;
- struct bt_clock_snapshot *default_end_cs;
- struct bt_property_uint discarded_event_counter_snapshot;
- struct bt_property_uint packet_counter_snapshot;
bool frozen;
};
bt_packet_status bt_packet_move_context_field(bt_packet *packet,
bt_packet_context_field *context);
-extern
-void bt_packet_set_default_beginning_clock_snapshot(bt_packet *packet,
- uint64_t value_cycles);
-
-extern
-void bt_packet_set_default_end_clock_snapshot(bt_packet *packet,
- uint64_t value_cycles);
-
-extern
-void bt_packet_set_discarded_event_counter_snapshot(bt_packet *packet,
- uint64_t value);
-
-extern
-void bt_packet_set_packet_counter_snapshot(bt_packet *packet,
- uint64_t value);
-
#ifdef __cplusplus
}
#endif
extern bt_bool bt_stream_class_default_clock_is_always_known(
const bt_stream_class *stream_class);
-extern bt_bool bt_stream_class_packets_have_discarded_event_counter_snapshot(
- const bt_stream_class *stream_class);
-
-extern bt_bool bt_stream_class_packets_have_packet_counter_snapshot(
- const bt_stream_class *stream_class);
-
-extern bt_bool bt_stream_class_packets_have_default_beginning_clock_snapshot(
- const bt_stream_class *stream_class);
-
-extern bt_bool bt_stream_class_packets_have_default_end_clock_snapshot(
- const bt_stream_class *stream_class);
-
extern void bt_stream_class_get_ref(const bt_stream_class *stream_class);
extern void bt_stream_class_put_ref(const bt_stream_class *stream_class);
uint64_t id;
bool assigns_automatic_event_class_id;
bool assigns_automatic_stream_id;
- bool packets_have_discarded_event_counter_snapshot;
- bool packets_have_packet_counter_snapshot;
- bool packets_have_default_beginning_cs;
- bool packets_have_default_end_cs;
struct bt_field_class *packet_context_fc;
struct bt_field_class *event_common_context_fc;
struct bt_clock_class *default_clock_class;
bt_stream_class *stream_class,
bt_clock_class *clock_class);
-extern void
-bt_stream_class_set_packets_have_discarded_event_counter_snapshot(
- bt_stream_class *stream_class, bt_bool value);
-
-extern void
-bt_stream_class_set_packets_have_packet_counter_snapshot(
- bt_stream_class *stream_class, bt_bool value);
-
-extern void
-bt_stream_class_set_packets_have_default_beginning_clock_snapshot(
- bt_stream_class *stream_class, bt_bool value);
-
-extern void
-bt_stream_class_set_packets_have_default_end_clock_snapshot(
- bt_stream_class *stream_class, bt_bool value);
-
#ifdef __cplusplus
}
#endif
return;
}
- BUF_APPEND(", %sassigns-auto-ec-id=%d, %sassigns-auto-stream-id=%d, "
- "%spackets-have-discarded-ev-counter-snapshot=%d, "
- "%spackets-have-packet-counter-snapshot=%d, "
- "%spackets-have-default-begin-cs=%d, "
- "%spackets-have-default-end-cs=%d",
+ BUF_APPEND(", %sassigns-auto-ec-id=%d, %sassigns-auto-stream-id=%d",
PRFIELD(stream_class->assigns_automatic_event_class_id),
- PRFIELD(stream_class->assigns_automatic_stream_id),
- PRFIELD(stream_class->packets_have_discarded_event_counter_snapshot),
- PRFIELD(stream_class->packets_have_packet_counter_snapshot),
- PRFIELD(stream_class->packets_have_default_beginning_cs),
- PRFIELD(stream_class->packets_have_default_end_cs));
+ PRFIELD(stream_class->assigns_automatic_stream_id));
BUF_APPEND(", %strace-class-addr=%p", PRFIELD(trace_class));
SET_TMP_PREFIX("trace-class-");
format_trace_class(buf_ch, false, tmp_prefix, trace_class);
return;
}
- if (packet->default_beginning_cs) {
- SET_TMP_PREFIX("default-begin-cs-");
- format_clock_snapshot(buf_ch, true, tmp_prefix,
- packet->default_beginning_cs);
- }
-
- if (packet->default_end_cs) {
- SET_TMP_PREFIX("default-end-cs-");
- format_clock_snapshot(buf_ch, true, tmp_prefix,
- packet->default_end_cs);
- }
-
- if (packet->discarded_event_counter_snapshot.base.avail) {
- BUF_APPEND(", %sdiscarded-ev-counter-snapshot=%" PRIu64,
- PRFIELD(packet->discarded_event_counter_snapshot.value));
- }
-
- if (packet->packet_counter_snapshot.base.avail) {
- BUF_APPEND(", %spacket-counter-snapshot=%" PRIu64,
- PRFIELD(packet->packet_counter_snapshot.value));
- }
-
BUF_APPEND(", %sstream-addr=%p", PRFIELD(stream));
SET_TMP_PREFIX("stream-");
format_stream(buf_ch, false, tmp_prefix, stream);
#include <babeltrace/trace-ir/stream-class.h>
#include <babeltrace/trace-ir/stream.h>
#include <babeltrace/trace-ir/stream-internal.h>
-#include <babeltrace/trace-ir/clock-snapshot-internal.h>
#include <babeltrace/trace-ir/trace-internal.h>
#include <babeltrace/object-internal.h>
#include <babeltrace/assert-internal.h>
((struct bt_packet *) packet)->frozen = is_frozen;
}
-static inline
-void reset_counter_snapshots(struct bt_packet *packet)
-{
- packet->discarded_event_counter_snapshot.base.avail =
- BT_PROPERTY_AVAILABILITY_NOT_AVAILABLE;
- packet->packet_counter_snapshot.base.avail =
- BT_PROPERTY_AVAILABILITY_NOT_AVAILABLE;
-}
-
static inline
void reset_packet(struct bt_packet *packet)
{
bt_field_set_is_frozen(packet->context_field->field, false);
bt_field_reset(packet->context_field->field);
}
-
- if (packet->default_beginning_cs) {
- bt_clock_snapshot_reset(packet->default_beginning_cs);
- }
-
- if (packet->default_end_cs) {
- bt_clock_snapshot_reset(packet->default_end_cs);
- }
-
- reset_counter_snapshots(packet);
}
static
packet->context_field = NULL;
}
- if (packet->default_beginning_cs) {
- BT_LOGD_STR("Recycling beginning clock snapshot.");
- bt_clock_snapshot_recycle(packet->default_beginning_cs);
- packet->default_beginning_cs = NULL;
- }
-
- if (packet->default_end_cs) {
- BT_LOGD_STR("Recycling end clock snapshot.");
- bt_clock_snapshot_recycle(packet->default_end_cs);
- packet->default_end_cs = NULL;
- }
-
BT_LOGD_STR("Putting packet's stream.");
BT_OBJECT_PUT_REF_AND_RESET(packet->stream);
g_free(packet);
}
}
- if (stream->class->default_clock_class) {
- if (stream->class->packets_have_default_beginning_cs) {
- packet->default_beginning_cs = bt_clock_snapshot_create(
- stream->class->default_clock_class);
- if (!packet->default_beginning_cs) {
- /* bt_clock_snapshot_create() logs errors */
- goto error;
- }
- }
-
- if (stream->class->packets_have_default_end_cs) {
- packet->default_end_cs = bt_clock_snapshot_create(
- stream->class->default_clock_class);
- if (!packet->default_end_cs) {
- /* bt_clock_snapshot_create() logs errors */
- goto error;
- }
- }
- }
-
- reset_counter_snapshots(packet);
BT_LIB_LOGD("Created packet object: %!+a", packet);
goto end;
return BT_PACKET_STATUS_OK;
}
-void bt_packet_set_default_beginning_clock_snapshot(struct bt_packet *packet,
- uint64_t value_cycles)
-{
- struct bt_stream_class *sc;
-
- BT_ASSERT_PRE_NON_NULL(packet, "Packet");
- BT_ASSERT_PRE_PACKET_HOT(packet);
- sc = packet->stream->class;
- BT_ASSERT(sc);
- BT_ASSERT_PRE(sc->default_clock_class,
- "Packet's stream class has no default clock class: "
- "%![packet-]+a, %![sc-]+S", packet, sc);
- BT_ASSERT_PRE(sc->packets_have_default_beginning_cs,
- "Packet's stream class indicates that its packets have "
- "no default beginning clock snapshot: %![packet-]+a, %![sc-]+S",
- packet, sc);
- BT_ASSERT(packet->default_beginning_cs);
- bt_clock_snapshot_set_raw_value(packet->default_beginning_cs,
- value_cycles);
- BT_LIB_LOGV("Set packet's default beginning clock snapshot: "
- "%![packet-]+a, value=%" PRIu64, packet, value_cycles);
-}
-
-enum bt_clock_snapshot_state bt_packet_borrow_default_beginning_clock_snapshot(
- const struct bt_packet *packet,
- const struct bt_clock_snapshot **clock_snapshot)
-{
- BT_ASSERT_PRE_NON_NULL(packet, "Packet");
- BT_ASSERT_PRE_NON_NULL(clock_snapshot, "Clock snapshot (output)");
- *clock_snapshot = packet->default_beginning_cs;
- return BT_CLOCK_SNAPSHOT_STATE_KNOWN;
-}
-
-void bt_packet_set_default_end_clock_snapshot(struct bt_packet *packet,
- uint64_t value_cycles)
-{
- struct bt_stream_class *sc;
-
- BT_ASSERT_PRE_NON_NULL(packet, "Packet");
- BT_ASSERT_PRE_PACKET_HOT(packet);
- sc = packet->stream->class;
- BT_ASSERT(sc);
- BT_ASSERT_PRE(sc->default_clock_class,
- "Packet's stream class has no default clock class: "
- "%![packet-]+a, %![sc-]+S", packet, sc);
- BT_ASSERT_PRE(sc->packets_have_default_end_cs,
- "Packet's stream class indicates that its packets have "
- "no default end clock snapshot: %![packet-]+a, %![sc-]+S",
- packet, sc);
- BT_ASSERT(packet->default_end_cs);
- bt_clock_snapshot_set_raw_value(packet->default_end_cs, value_cycles);
- BT_LIB_LOGV("Set packet's default end clock snapshot: "
- "%![packet-]+a, value=%" PRIu64, packet, value_cycles);
-}
-
-enum bt_clock_snapshot_state bt_packet_borrow_default_end_clock_snapshot(
- const struct bt_packet *packet,
- const struct bt_clock_snapshot **clock_snapshot)
-{
- BT_ASSERT_PRE_NON_NULL(packet, "Packet");
- BT_ASSERT_PRE_NON_NULL(clock_snapshot, "Clock snapshot (output)");
- *clock_snapshot = packet->default_end_cs;
- return BT_CLOCK_SNAPSHOT_STATE_KNOWN;
-}
-
-enum bt_property_availability bt_packet_get_discarded_event_counter_snapshot(
- const struct bt_packet *packet, uint64_t *value)
-{
- BT_ASSERT_PRE_NON_NULL(packet, "Packet");
- BT_ASSERT_PRE_NON_NULL(value, "Value (output)");
- *value = packet->discarded_event_counter_snapshot.value;
- return packet->discarded_event_counter_snapshot.base.avail;
-}
-
-void bt_packet_set_discarded_event_counter_snapshot(struct bt_packet *packet,
- uint64_t value)
-{
- BT_ASSERT_PRE_NON_NULL(packet, "Packet");
- BT_ASSERT_PRE_PACKET_HOT(packet);
- BT_ASSERT_PRE(packet->stream->class->packets_have_discarded_event_counter_snapshot,
- "Packet's stream's discarded event counter is not enabled: "
- "%![packet-]+a", packet);
- bt_property_uint_set(&packet->discarded_event_counter_snapshot, value);
-}
-
-enum bt_property_availability bt_packet_get_packet_counter_snapshot(
- const struct bt_packet *packet, uint64_t *value)
-{
- BT_ASSERT_PRE_NON_NULL(packet, "Packet");
- BT_ASSERT_PRE_NON_NULL(value, "Value (output)");
- *value = packet->packet_counter_snapshot.value;
- return packet->packet_counter_snapshot.base.avail;
-}
-
-void bt_packet_set_packet_counter_snapshot(struct bt_packet *packet,
- uint64_t value)
-{
- BT_ASSERT_PRE_NON_NULL(packet, "Packet");
- BT_ASSERT_PRE_PACKET_HOT(packet);
- BT_ASSERT_PRE(packet->stream->class->packets_have_packet_counter_snapshot,
- "Packet's stream's packet counter is not enabled: "
- "%![packet-]+a", packet);
- bt_property_uint_set(&packet->packet_counter_snapshot, value);
-}
-
void bt_packet_get_ref(const struct bt_packet *packet)
{
bt_object_get_ref(packet);
"assignment property: %!+S", stream_class);
}
-bt_bool bt_stream_class_packets_have_discarded_event_counter_snapshot(
- const struct bt_stream_class *stream_class)
-{
- BT_ASSERT_PRE_NON_NULL(stream_class, "Stream class");
- return (bt_bool) stream_class->packets_have_discarded_event_counter_snapshot;
-}
-
-void bt_stream_class_set_packets_have_discarded_event_counter_snapshot(
- struct bt_stream_class *stream_class,
- bt_bool value)
-{
- BT_ASSERT_PRE_NON_NULL(stream_class, "Stream class");
- BT_ASSERT_PRE_STREAM_CLASS_HOT(stream_class);
- stream_class->packets_have_discarded_event_counter_snapshot =
- (bool) value;
- BT_LIB_LOGV("Set stream class's "
- "\"packets have discarded event counter snapshot\" property: "
- "%!+S", stream_class);
-}
-
-bt_bool bt_stream_class_packets_have_packet_counter_snapshot(
- const struct bt_stream_class *stream_class)
-{
- BT_ASSERT_PRE_NON_NULL(stream_class, "Stream class");
- return (bt_bool) stream_class->packets_have_packet_counter_snapshot;
-}
-
-void bt_stream_class_set_packets_have_packet_counter_snapshot(
- struct bt_stream_class *stream_class,
- bt_bool value)
-{
- BT_ASSERT_PRE_NON_NULL(stream_class, "Stream class");
- BT_ASSERT_PRE_STREAM_CLASS_HOT(stream_class);
- stream_class->packets_have_packet_counter_snapshot =
- (bool) value;
- BT_LIB_LOGV("Set stream class's "
- "\"packets have packet counter snapshot\" property: "
- "%!+S", stream_class);
-}
-
-bt_bool bt_stream_class_packets_have_default_beginning_clock_snapshot(
- const struct bt_stream_class *stream_class)
-{
- BT_ASSERT_PRE_NON_NULL(stream_class, "Stream class");
- return (bt_bool) stream_class->packets_have_default_beginning_cs;
-}
-
-void bt_stream_class_set_packets_have_default_beginning_clock_snapshot(
- struct bt_stream_class *stream_class,
- bt_bool value)
-{
- BT_ASSERT_PRE_NON_NULL(stream_class, "Stream class");
- BT_ASSERT_PRE_STREAM_CLASS_HOT(stream_class);
- BT_ASSERT_PRE(!value || stream_class->default_clock_class,
- "Stream class does not have a default clock class: %!+S",
- stream_class);
- stream_class->packets_have_default_beginning_cs = (bool) value;
- BT_LIB_LOGV("Set stream class's "
- "\"packets have default beginning clock snapshot\" property: "
- "%!+S", stream_class);
-}
-
-bt_bool bt_stream_class_packets_have_default_end_clock_snapshot(
- const struct bt_stream_class *stream_class)
-{
- BT_ASSERT_PRE_NON_NULL(stream_class, "Stream class");
- return (bt_bool) stream_class->packets_have_default_end_cs;
-}
-
-void bt_stream_class_set_packets_have_default_end_clock_snapshot(
- struct bt_stream_class *stream_class,
- bt_bool value)
-{
- BT_ASSERT_PRE_NON_NULL(stream_class, "Stream class");
- BT_ASSERT_PRE_STREAM_CLASS_HOT(stream_class);
- BT_ASSERT_PRE(!value || stream_class->default_clock_class,
- "Stream class does not have a default clock class: %!+S",
- stream_class);
- stream_class->packets_have_default_end_cs = (bool) value;
- BT_LIB_LOGV("Set stream class's "
- "\"packets have default end clock snapshot\" property: "
- "%!+S", stream_class);
-}
-
bt_bool bt_stream_class_default_clock_is_always_known(
const struct bt_stream_class *stream_class)
{
void ctf_stream_class_to_ir(struct ctx *ctx)
{
int ret;
- struct ctf_field_class_int *int_fc;
bt_field_class *ir_fc;
BT_ASSERT(ctx->sc);
BT_ASSERT(ret == 0);
}
- int_fc = borrow_named_int_field_class((void *) ctx->sc->packet_context_fc,
- "events_discarded");
- if (int_fc) {
- if (int_fc->meaning == CTF_FIELD_CLASS_MEANING_DISC_EV_REC_COUNTER_SNAPSHOT) {
- bt_stream_class_set_packets_have_discarded_event_counter_snapshot(
- ctx->ir_sc, BT_TRUE);
- }
- }
-
- int_fc = borrow_named_int_field_class((void *) ctx->sc->packet_context_fc,
- "packet_seq_num");
- if (int_fc) {
- if (int_fc->meaning == CTF_FIELD_CLASS_MEANING_PACKET_COUNTER_SNAPSHOT) {
- bt_stream_class_set_packets_have_packet_counter_snapshot(
- ctx->ir_sc, BT_TRUE);
- }
- }
-
- int_fc = borrow_named_int_field_class((void *) ctx->sc->packet_context_fc,
- "timestamp_begin");
- if (int_fc) {
- if (int_fc->meaning == CTF_FIELD_CLASS_MEANING_PACKET_BEGINNING_TIME) {
- bt_stream_class_set_packets_have_default_beginning_clock_snapshot(
- ctx->ir_sc, BT_TRUE);
- }
- }
-
- int_fc = borrow_named_int_field_class((void *) ctx->sc->packet_context_fc,
- "timestamp_end");
- if (int_fc) {
- if (int_fc->meaning == CTF_FIELD_CLASS_MEANING_PACKET_END_TIME) {
- bt_stream_class_set_packets_have_default_end_clock_snapshot(
- ctx->ir_sc, BT_TRUE);
- }
- }
-
ctx->sc->is_translated = true;
ctx->sc->ir_sc = ctx->ir_sc;
sc = notit->meta.sc->ir_sc;
BT_ASSERT(sc);
- if (bt_stream_class_packets_have_discarded_event_counter_snapshot(sc)) {
- BT_ASSERT(notit->snapshots.discarded_events != UINT64_C(-1));
- bt_packet_set_discarded_event_counter_snapshot(
- notit->packet, notit->snapshots.discarded_events);
- }
-
- if (bt_stream_class_packets_have_packet_counter_snapshot(sc)) {
- BT_ASSERT(notit->snapshots.packets != UINT64_C(-1));
- bt_packet_set_packet_counter_snapshot(
- notit->packet, notit->snapshots.packets);
- }
-
- if (bt_stream_class_packets_have_default_beginning_clock_snapshot(sc)) {
- BT_ASSERT(notit->snapshots.beginning_clock != UINT64_C(-1));
- bt_packet_set_default_beginning_clock_snapshot(
- notit->packet, notit->snapshots.beginning_clock);
- }
-
- if (bt_stream_class_packets_have_default_end_clock_snapshot(sc)) {
- BT_ASSERT(notit->snapshots.end_clock != UINT64_C(-1));
- bt_packet_set_default_end_clock_snapshot(
- notit->packet, notit->snapshots.end_clock);
- }
-
if (notit->packet_context_field) {
ret = bt_packet_move_context_field(
notit->packet, notit->packet_context_field);