X-Git-Url: https://git.efficios.com/?a=blobdiff_plain;f=lib%2Fctf-writer%2Fstream.c;h=5ed1ebafaaac0c8f3467a7ef386ce576dc976e29;hb=3fea54f69edd1780566230255da196cb6e82df62;hp=aa6a525c7a1e078187e237522b0143f4d73ece02;hpb=3dca22768a95bef664012559aa9ac977091de6ac;p=babeltrace.git diff --git a/lib/ctf-writer/stream.c b/lib/ctf-writer/stream.c index aa6a525c..5ed1ebaf 100644 --- a/lib/ctf-writer/stream.c +++ b/lib/ctf-writer/stream.c @@ -154,7 +154,9 @@ int set_packet_header_uuid(struct bt_ctf_stream *stream) goto end; } - trace = (struct bt_ctf_trace *) bt_object_get_parent(stream); + trace = (struct bt_ctf_trace *) + bt_object_get_parent(&stream->common.base); + for (i = 0; i < 16; i++) { struct bt_ctf_field *uuid_element = bt_ctf_field_array_get_field(uuid_field, i); @@ -512,7 +514,7 @@ int visit_field_update_clock_value(struct bt_ctf_field *field, uint64_t *val) case BT_CTF_FIELD_TYPE_ID_SEQUENCE: { uint64_t i; - int64_t len = bt_field_common_sequence_get_int_length( + int64_t len = bt_field_common_sequence_get_length( (void *) field); if (len < 0) { @@ -854,7 +856,7 @@ end: static void release_event(struct bt_ctf_event *event) { - if (bt_object_get_ref_count(event)) { + if (bt_object_get_ref_count(&event->common.base)) { /* * The event is being orphaned, but it must guarantee the * existence of its event class for the duration of its @@ -863,7 +865,7 @@ void release_event(struct bt_ctf_event *event) bt_get(event->common.class); BT_PUT(event->common.base.parent); } else { - bt_object_release(event); + bt_object_try_spec_release(&event->common.base); } } @@ -1006,7 +1008,8 @@ struct bt_ctf_stream *bt_ctf_stream_create_with_id( } stream->pos.fd = -1; - writer = (struct bt_ctf_writer *) bt_object_get_parent(trace); + writer = (struct bt_ctf_writer *) + bt_object_get_parent(&trace->common.base); stream->last_ts_end = -1ULL; BT_LOGD("CTF writer stream object belongs writer's trace: " "writer-addr=%p", writer); @@ -1248,7 +1251,7 @@ static int auto_populate_event_header(struct bt_ctf_stream *stream, stream, bt_ctf_stream_get_name(stream), event); id_field = bt_ctf_field_structure_get_field_by_name( - (void *) event->common.header_field, "id"); + (void *) event->common.header_field->field, "id"); event_class_id = bt_event_class_common_get_id(event->common.class); BT_ASSERT(event_class_id >= 0); @@ -1272,7 +1275,7 @@ static int auto_populate_event_header(struct bt_ctf_stream *stream, * 3. The "timestamp" field is not set. */ timestamp_field = bt_ctf_field_structure_get_field_by_name( - (void *) event->common.header_field, "timestamp"); + (void *) event->common.header_field->field, "timestamp"); if (timestamp_field && stream_class->clock && bt_ctf_field_get_type_id(id_field) == BT_CTF_FIELD_TYPE_ID_INTEGER && !bt_ctf_field_is_set_recursive(timestamp_field)) { @@ -1355,7 +1358,7 @@ int bt_ctf_stream_append_event(struct bt_ctf_stream *stream, goto end; } - bt_object_set_parent(event, stream); + bt_object_set_parent(&event->common.base, &stream->common.base); BT_LOGV_STR("Automatically populating the header of the event to append."); ret = auto_populate_event_header(stream, event); if (ret) { @@ -1365,10 +1368,8 @@ int bt_ctf_stream_append_event(struct bt_ctf_stream *stream, /* Make sure the various scopes of the event are set */ BT_LOGV_STR("Validating event to append."); - ret = bt_event_common_validate(BT_TO_COMMON(event)); - if (ret) { - goto error; - } + BT_ASSERT_PRE(bt_event_common_validate(BT_TO_COMMON(event)) == 0, + "Invalid event: %!+we", event); /* Save the new event and freeze it */ BT_LOGV_STR("Freezing the event to append."); @@ -1400,8 +1401,7 @@ error: * Orphan the event; we were not successful in associating it to * a stream. */ - bt_object_set_parent(event, NULL); - + bt_object_set_parent(&event->common.base, NULL); return ret; } @@ -1514,7 +1514,8 @@ int bt_ctf_stream_set_packet_header(struct bt_ctf_stream *stream, goto end; } - trace = (struct bt_ctf_trace *) bt_object_get_parent(stream); + trace = (struct bt_ctf_trace *) + bt_object_get_parent(&stream->common.base); if (!field) { if (trace->common.packet_header_field_type) { @@ -1566,7 +1567,7 @@ void reset_structure_field(struct bt_ctf_field *structure, const char *name) member = bt_ctf_field_structure_get_field_by_name(structure, name); if (member) { - (void) bt_field_common_reset_recursive((void *) member); + bt_field_common_reset_recursive((void *) member); bt_put(member); } } @@ -1688,12 +1689,12 @@ int bt_ctf_stream_flush(struct bt_ctf_stream *stream) if (event->common.header_field) { BT_LOGV_STR("Serializing event's header field."); ret = bt_ctf_field_serialize_recursive( - (void *) event->common.header_field, + (void *) event->common.header_field->field, &stream->pos, native_byte_order); if (ret) { BT_LOGW("Cannot serialize event's header field: " "field-addr=%p", - event->common.header_field); + event->common.header_field->field); goto end; } } @@ -1939,7 +1940,7 @@ int try_set_structure_field_integer(struct bt_ctf_field *structure, char *name, struct bt_ctf_stream_class *bt_ctf_stream_get_class( struct bt_ctf_stream *stream) { - return BT_FROM_COMMON(bt_stream_common_get_class(BT_TO_COMMON(stream))); + return bt_get(bt_stream_common_borrow_class(BT_TO_COMMON(stream))); } const char *bt_ctf_stream_get_name(struct bt_ctf_stream *stream)