X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=lib%2Ftrace-ir%2Fevent.c;h=f63bd309965ed1e45f03de914fd70e7ea753632b;hb=35fa110e5bea4a35497313adf3e3d0fa09db9ff7;hp=c2f772a56521e9f6095418c8894522b4a7905d67;hpb=9e550e5f4bc9f2c09c3f85305c89c01e0da57424;p=babeltrace.git diff --git a/lib/trace-ir/event.c b/lib/trace-ir/event.c index c2f772a5..f63bd309 100644 --- a/lib/trace-ir/event.c +++ b/lib/trace-ir/event.c @@ -1,8 +1,7 @@ /* + * Copyright 2017-2018 Philippe Proulx * Copyright 2013, 2014 Jérémie Galarneau * - * Author: Jérémie Galarneau - * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights @@ -26,17 +25,18 @@ #include #include -#include -#include +#include +#include #include -#include -#include +#include +#include #include -#include +#include #include #include #include #include +#include #include #include #include @@ -44,14 +44,13 @@ #include #include #include -#include #include -#include #include +#include #include BT_HIDDEN -void _bt_event_set_is_frozen(struct bt_event *event, bool is_frozen) +void _bt_event_set_is_frozen(const struct bt_event *event, bool is_frozen) { BT_ASSERT(event); BT_LIB_LOGD("Setting event's frozen state: %!+e, is-frozen=%d", @@ -81,7 +80,7 @@ void _bt_event_set_is_frozen(struct bt_event *event, bool is_frozen) is_frozen); } - event->frozen = is_frozen; + ((struct bt_event *) event)->frozen = is_frozen; BT_LOGD_STR("Setting event's packet's frozen state."); bt_packet_set_is_frozen(event->packet, is_frozen); } @@ -107,7 +106,7 @@ struct bt_field_wrapper *create_event_header_field( field_wrapper = bt_field_wrapper_create( &stream_class->event_header_field_pool, - bt_stream_class_borrow_event_header_field_class(stream_class)); + stream_class->event_header_fc); if (!field_wrapper) { goto error; } @@ -142,7 +141,7 @@ struct bt_event *bt_event_new(struct bt_event_class *event_class) stream_class = bt_event_class_borrow_stream_class(event_class); BT_ASSERT(stream_class); - if (bt_stream_class_borrow_event_header_field_class(stream_class)) { + if (stream_class->event_header_fc) { event->header_field = create_event_header_field(stream_class); if (!event->header_field) { BT_LOGE_STR("Cannot create event header field."); @@ -150,8 +149,7 @@ struct bt_event *bt_event_new(struct bt_event_class *event_class) } } - fc = bt_stream_class_borrow_event_common_context_field_class( - stream_class); + fc = stream_class->event_common_context_fc; if (fc) { event->common_context_field = bt_field_create(fc); if (!event->common_context_field) { @@ -160,7 +158,7 @@ struct bt_event *bt_event_new(struct bt_event_class *event_class) } } - fc = bt_event_class_borrow_specific_context_field_class(event_class); + fc = event_class->specific_context_fc; if (fc) { event->specific_context_field = bt_field_create(fc); if (!event->specific_context_field) { @@ -169,7 +167,7 @@ struct bt_event *bt_event_new(struct bt_event_class *event_class) } } - fc = bt_event_class_borrow_payload_field_class(event_class); + fc = event_class->payload_fc; if (fc) { event->payload_field = bt_field_create(fc); if (!event->payload_field) { @@ -179,10 +177,10 @@ struct bt_event *bt_event_new(struct bt_event_class *event_class) } if (stream_class->default_clock_class) { - event->default_cv = bt_clock_value_create( + event->default_cs = bt_clock_snapshot_create( stream_class->default_clock_class); - if (!event->default_cv) { - /* bt_clock_value_create() logs errors */ + if (!event->default_cs) { + /* bt_clock_snapshot_create() logs errors */ goto error; } } @@ -205,22 +203,35 @@ struct bt_event_class *bt_event_borrow_class(struct bt_event *event) return event->class; } +const struct bt_event_class *bt_event_borrow_class_const( + const struct bt_event *event) +{ + return bt_event_borrow_class((void *) event); +} + struct bt_stream *bt_event_borrow_stream(struct bt_event *event) { BT_ASSERT_PRE_NON_NULL(event, "Event"); return event->packet ? event->packet->stream : NULL; } +const struct bt_stream *bt_event_borrow_stream_const( + const struct bt_event *event) +{ + return bt_event_borrow_stream((void *) event); +} + struct bt_field *bt_event_borrow_header_field(struct bt_event *event) { BT_ASSERT_PRE_NON_NULL(event, "Event"); return event->header_field ? event->header_field->field : NULL; } -struct bt_private_field *bt_private_event_borrow_header_private_field( - struct bt_private_event *event) +const struct bt_field *bt_event_borrow_header_field_const( + const struct bt_event *event) { - return (void *) bt_event_borrow_header_field((void *) event); + BT_ASSERT_PRE_NON_NULL(event, "Event"); + return event->header_field ? event->header_field->field : NULL; } struct bt_field *bt_event_borrow_common_context_field(struct bt_event *event) @@ -229,10 +240,11 @@ struct bt_field *bt_event_borrow_common_context_field(struct bt_event *event) return event->common_context_field; } -struct bt_private_field *bt_private_event_borrow_common_context_private_field( - struct bt_private_event *event) +const struct bt_field *bt_event_borrow_common_context_field_const( + const struct bt_event *event) { - return (void *) bt_event_borrow_common_context_field((void *) event); + BT_ASSERT_PRE_NON_NULL(event, "Event"); + return event->common_context_field; } struct bt_field *bt_event_borrow_specific_context_field(struct bt_event *event) @@ -241,10 +253,11 @@ struct bt_field *bt_event_borrow_specific_context_field(struct bt_event *event) return event->specific_context_field; } -struct bt_private_field *bt_private_event_borrow_specific_context_private_field( - struct bt_private_event *event) +const struct bt_field *bt_event_borrow_specific_context_field_const( + const struct bt_event *event) { - return (void *) bt_event_borrow_specific_context_field((void *) event); + BT_ASSERT_PRE_NON_NULL(event, "Event"); + return event->specific_context_field; } struct bt_field *bt_event_borrow_payload_field(struct bt_event *event) @@ -253,10 +266,11 @@ struct bt_field *bt_event_borrow_payload_field(struct bt_event *event) return event->payload_field; } -struct bt_private_field *bt_private_event_borrow_payload_private_field( - struct bt_private_event *event) +const struct bt_field *bt_event_borrow_payload_field_const( + const struct bt_event *event) { - return (void *) bt_event_borrow_payload_field((void *) event); + BT_ASSERT_PRE_NON_NULL(event, "Event"); + return event->payload_field; } static @@ -283,39 +297,43 @@ void bt_event_destroy(struct bt_event *event) if (event->header_field) { BT_LOGD_STR("Releasing event's header field."); release_event_header_field(event->header_field, event); + event->header_field = NULL; } if (event->common_context_field) { BT_LOGD_STR("Destroying event's stream event context field."); bt_field_destroy(event->common_context_field); + event->common_context_field = NULL; } if (event->specific_context_field) { BT_LOGD_STR("Destroying event's context field."); bt_field_destroy(event->specific_context_field); + event->specific_context_field = NULL; } if (event->payload_field) { BT_LOGD_STR("Destroying event's payload field."); bt_field_destroy(event->payload_field); + event->payload_field = NULL; } BT_LOGD_STR("Putting event's class."); bt_object_put_ref(event->class); - if (event->default_cv) { - bt_clock_value_recycle(event->default_cv); + if (event->default_cs) { + bt_clock_snapshot_recycle(event->default_cs); + event->default_cs = NULL; } BT_LOGD_STR("Putting event's packet."); - bt_object_put_ref(event->packet); + BT_OBJECT_PUT_REF_AND_RESET(event->packet); g_free(event); } -int bt_private_event_set_default_clock_value( - struct bt_private_event *priv_event, uint64_t value_cycles) +void bt_event_set_default_clock_snapshot(struct bt_event *event, + uint64_t value_cycles) { - struct bt_event *event = (void *) priv_event; struct bt_stream_class *sc; BT_ASSERT_PRE_NON_NULL(event, "Event"); @@ -325,20 +343,20 @@ int bt_private_event_set_default_clock_value( BT_ASSERT_PRE(sc->default_clock_class, "Event's stream class has no default clock class: " "%![ev-]+e, %![sc-]+S", event, sc); - BT_ASSERT(event->default_cv); - bt_clock_value_set_value_inline(event->default_cv, value_cycles); - BT_LIB_LOGV("Set event's default clock value: %![event-]+e, " + BT_ASSERT(event->default_cs); + bt_clock_snapshot_set_value_inline(event->default_cs, value_cycles); + BT_LIB_LOGV("Set event's default clock snapshot: %![event-]+e, " "value=%" PRIu64, event, value_cycles); - return 0; } -enum bt_clock_value_status bt_event_borrow_default_clock_value( - struct bt_event *event, struct bt_clock_value **clock_value) +enum bt_clock_snapshot_state bt_event_borrow_default_clock_snapshot_const( + const struct bt_event *event, + const struct bt_clock_snapshot **clock_snapshot) { BT_ASSERT_PRE_NON_NULL(event, "Event"); - BT_ASSERT_PRE_NON_NULL(clock_value, "Clock value (output)"); - *clock_value = event->default_cv; - return BT_CLOCK_VALUE_STATUS_KNOWN; + BT_ASSERT_PRE_NON_NULL(clock_snapshot, "Clock snapshot (output)"); + *clock_snapshot = event->default_cs; + return BT_CLOCK_SNAPSHOT_STATE_KNOWN; } struct bt_packet *bt_event_borrow_packet(struct bt_event *event) @@ -347,27 +365,24 @@ struct bt_packet *bt_event_borrow_packet(struct bt_event *event) return event->packet; } -struct bt_private_packet *bt_private_event_borrow_packet( - struct bt_private_event *event) +const struct bt_packet *bt_event_borrow_packet_const( + const struct bt_event *event) { - return (void *) bt_event_borrow_packet((void *) event); + return bt_event_borrow_packet((void *) event); } -int bt_private_event_move_private_header_field( - struct bt_private_event *priv_event, - struct bt_private_event_header_field *priv_header_field) +enum bt_event_status bt_event_move_header_field(struct bt_event *event, + struct bt_event_header_field *header_field) { struct bt_stream_class *stream_class; - struct bt_event *event = (void *) priv_event; - struct bt_event_class *event_class = (void *) event_class; - struct bt_field_wrapper *field_wrapper = (void *) priv_header_field; + struct bt_field_wrapper *field_wrapper = (void *) header_field; BT_ASSERT_PRE_NON_NULL(event, "Event"); BT_ASSERT_PRE_NON_NULL(field_wrapper, "Header field"); BT_ASSERT_PRE_EVENT_HOT(event); stream_class = bt_event_class_borrow_stream_class_inline(event->class); BT_ASSERT_PRE(stream_class->event_header_fc, - "Stream class has no event header field classe: %!+S", + "Stream class has no event header field class: %!+S", stream_class); /* Recycle current header field: always exists */ @@ -376,11 +391,5 @@ int bt_private_event_move_private_header_field( /* Move new field */ event->header_field = field_wrapper; - return 0; -} - -struct bt_event *bt_event_borrow_from_private( - struct bt_private_event *priv_event) -{ - return (void *) priv_event; + return BT_EVENT_STATUS_OK; }