X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=src%2Fctf-writer%2Fevent.c;h=3b67685623e53047a8436aa015966b22c1305ecb;hb=f9ccd9dac728d7016744deeba12a020bec160f27;hp=c68b87adb7b15af4020fd37e6d110bcb0a3fe097;hpb=350ad6c1c5f45a4e90c33e3c1354125c209bbf02;p=babeltrace.git diff --git a/src/ctf-writer/event.c b/src/ctf-writer/event.c index c68b87ad..3b676856 100644 --- a/src/ctf-writer/event.c +++ b/src/ctf-writer/event.c @@ -1,38 +1,23 @@ /* + * SPDX-License-Identifier: MIT + * * Copyright 2013, 2014 Jérémie Galarneau * Copyright 2017-2018 Philippe Proulx - * - * 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 - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. */ #define BT_LOG_TAG "CTF-WRITER/EVENT" #include "logging.h" #include +#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include #include "common/assert.h" #include "compat/compiler.h" @@ -72,14 +57,14 @@ int bt_ctf_event_common_validate_types_for_create( struct bt_ctf_private_value *environment = NULL; stream_class = bt_ctf_event_class_common_borrow_stream_class(event_class); - BT_ASSERT(stream_class); + BT_ASSERT_DBG(stream_class); trace = bt_ctf_stream_class_common_borrow_trace(stream_class); if (trace) { BT_LOGD_STR("Event class is part of a trace."); packet_header_type = bt_ctf_trace_common_borrow_packet_header_field_type(trace); trace_valid = trace->valid; - BT_ASSERT(trace_valid); + BT_ASSERT_DBG(trace_valid); environment = trace->environment; } @@ -132,10 +117,10 @@ static int bt_ctf_event_common_create_fields( struct bt_ctf_stream_class_common *stream_class, struct bt_ctf_validation_output *validation_output, - create_field_func create_field_func, - release_field_func release_field_func, - create_header_field_func create_header_field_func, - release_header_field_func release_header_field_func, + create_field_func_type create_field_func, + release_field_func_type release_field_func, + create_header_field_func_type create_header_field_func, + release_header_field_func_type release_header_field_func, struct bt_ctf_field_wrapper **header_field, struct bt_ctf_field_common **stream_event_context_field, struct bt_ctf_field_common **context_field, @@ -213,13 +198,12 @@ end: return ret; } -BT_HIDDEN int _bt_ctf_event_common_validate(struct bt_ctf_event_common *event) { int ret = 0; struct bt_ctf_stream_class_common *stream_class; - BT_ASSERT(event); + BT_ASSERT_DBG(event); if (event->header_field) { ret = bt_ctf_field_common_validate_recursive( event->header_field->field); @@ -237,7 +221,7 @@ int _bt_ctf_event_common_validate(struct bt_ctf_event_common *event) * We should not have been able to create the event without associating * the event class to a stream class. */ - BT_ASSERT(stream_class); + BT_ASSERT_DBG(stream_class); if (stream_class->event_context_field_type) { ret = bt_ctf_field_common_validate_recursive( @@ -272,11 +256,10 @@ end: return ret; } -BT_HIDDEN void _bt_ctf_event_common_set_is_frozen(struct bt_ctf_event_common *event, bool is_frozen) { - BT_ASSERT(event); + BT_ASSERT_DBG(event); BT_LOGD("Freezing event: addr=%p, " "event-class-name=\"%s\", event-class-id=%" PRId64, event, bt_ctf_event_class_common_get_name(event->class), @@ -309,7 +292,6 @@ void _bt_ctf_event_common_set_is_frozen(struct bt_ctf_event_common *event, event->frozen = is_frozen; } -BT_HIDDEN int bt_ctf_event_common_initialize(struct bt_ctf_event_common *event, struct bt_ctf_event_class_common *event_class, struct bt_ctf_clock_class *init_expected_clock_class, @@ -319,10 +301,10 @@ int bt_ctf_event_common_initialize(struct bt_ctf_event_common *event, int (*map_clock_classes_func)(struct bt_ctf_stream_class_common *stream_class, struct bt_ctf_field_type_common *packet_context_field_type, struct bt_ctf_field_type_common *event_header_field_type), - create_field_func create_field_func, - release_field_func release_field_func, - create_header_field_func create_header_field_func, - release_header_field_func release_header_field_func) + create_field_func_type create_field_func, + release_field_func_type release_field_func, + create_header_field_func_type create_header_field_func, + release_header_field_func_type release_header_field_func) { int ret; struct bt_ctf_trace_common *trace = NULL; @@ -348,7 +330,7 @@ int bt_ctf_event_common_initialize(struct bt_ctf_event_common *event, event_class); /* The event class was frozen when added to its stream class */ - BT_ASSERT(event_class->frozen); + BT_ASSERT_DBG(event_class->frozen); trace = bt_ctf_stream_class_common_borrow_trace(stream_class); if (must_be_in_trace) { @@ -518,6 +500,7 @@ end: return ret; } +static int map_clock_classes_func(struct bt_ctf_stream_class_common *stream_class, struct bt_ctf_field_type_common *packet_context_type, struct bt_ctf_field_type_common *event_header_type) @@ -535,9 +518,10 @@ int map_clock_classes_func(struct bt_ctf_stream_class_common *stream_class, } static -void destroy_event_header_field(struct bt_ctf_field_wrapper *field_wrapper) +void destroy_event_header_field(struct bt_ctf_field_wrapper *field_wrapper, + struct bt_ctf_stream_class *stream_class __attribute__((unused))) { - BT_ASSERT(field_wrapper); + BT_ASSERT_DBG(field_wrapper); bt_ctf_object_put_ref(field_wrapper->field); bt_ctf_field_wrapper_destroy(field_wrapper); } @@ -567,7 +551,7 @@ error: bt_ctf_object_put_ref(field); if (field_wrapper) { - destroy_event_header_field(field_wrapper); + destroy_event_header_field(field_wrapper, stream_class); field_wrapper = NULL; } @@ -577,9 +561,9 @@ end: static void release_event_header_field(struct bt_ctf_field_wrapper *field_wrapper, - struct bt_ctf_event_common *event_common) + struct bt_ctf_event_common *event_common __attribute__((unused))) { - BT_ASSERT(field_wrapper); + BT_ASSERT_DBG(field_wrapper); BT_CTF_OBJECT_PUT_REF_AND_RESET(field_wrapper->field); bt_ctf_field_wrapper_destroy(field_wrapper); } @@ -592,6 +576,7 @@ void bt_ctf_event_destroy(struct bt_ctf_object *obj) g_free(obj); } +BT_EXPORT struct bt_ctf_event *bt_ctf_event_create(struct bt_ctf_event_class *event_class) { int ret; @@ -620,10 +605,10 @@ struct bt_ctf_event *bt_ctf_event_create(struct bt_ctf_event_class *event_class) (bt_ctf_validation_flag_copy_field_type_func) bt_ctf_field_type_copy, false, map_clock_classes_func, - (create_field_func) bt_ctf_field_create, - (release_field_func) bt_ctf_object_put_ref, - (create_header_field_func) create_event_header_field, - (release_header_field_func) destroy_event_header_field); + (create_field_func_type) bt_ctf_field_create, + (release_field_func_type) bt_ctf_object_put_ref, + (create_header_field_func_type) create_event_header_field, + (release_header_field_func_type) destroy_event_header_field); if (ret) { /* bt_ctf_event_common_initialize() logs errors */ goto error; @@ -638,26 +623,29 @@ end: return event; } +BT_EXPORT struct bt_ctf_event_class *bt_ctf_event_get_class(struct bt_ctf_event *event) { BT_CTF_ASSERT_PRE_NON_NULL(event, "Event"); return bt_ctf_object_get_ref(bt_ctf_event_common_borrow_class(BT_CTF_TO_COMMON(event))); } -BT_HIDDEN +static struct bt_ctf_stream *bt_ctf_event_borrow_stream(struct bt_ctf_event *event) { - BT_ASSERT(event); + BT_ASSERT_DBG(event); return (struct bt_ctf_stream *) bt_ctf_object_borrow_parent(&BT_CTF_TO_COMMON(event)->base); } +BT_EXPORT struct bt_ctf_stream *bt_ctf_event_get_stream(struct bt_ctf_event *event) { BT_CTF_ASSERT_PRE_NON_NULL(event, "Event"); return bt_ctf_object_get_ref(bt_ctf_event_borrow_stream(event)); } +BT_EXPORT int bt_ctf_event_set_payload(struct bt_ctf_event *event, const char *name, struct bt_ctf_field *field) { @@ -668,6 +656,7 @@ int bt_ctf_event_set_payload(struct bt_ctf_event *event, const char *name, (void *) event->common.payload_field, name, field); } +BT_EXPORT struct bt_ctf_field *bt_ctf_event_get_payload(struct bt_ctf_event *event, const char *name) { @@ -686,22 +675,26 @@ struct bt_ctf_field *bt_ctf_event_get_payload(struct bt_ctf_event *event, return field; } +BT_EXPORT struct bt_ctf_field *bt_ctf_event_get_payload_field( struct bt_ctf_event *event) { return bt_ctf_object_get_ref(bt_ctf_event_common_borrow_payload(BT_CTF_TO_COMMON(event))); } +BT_EXPORT struct bt_ctf_field *bt_ctf_event_get_header(struct bt_ctf_event *event) { return bt_ctf_object_get_ref(bt_ctf_event_common_borrow_header(BT_CTF_TO_COMMON(event))); } +BT_EXPORT struct bt_ctf_field *bt_ctf_event_get_context(struct bt_ctf_event *event) { return bt_ctf_object_get_ref(bt_ctf_event_common_borrow_context(BT_CTF_TO_COMMON(event))); } +BT_EXPORT struct bt_ctf_field *bt_ctf_event_get_stream_event_context( struct bt_ctf_event *event) { @@ -709,17 +702,16 @@ struct bt_ctf_field *bt_ctf_event_get_stream_event_context( BT_CTF_TO_COMMON(event))); } -BT_HIDDEN int bt_ctf_event_serialize(struct bt_ctf_event *event, struct bt_ctfser *ctfser, enum bt_ctf_byte_order native_byte_order) { int ret = 0; - BT_ASSERT(event); - BT_ASSERT(ctfser); + BT_ASSERT_DBG(event); + BT_ASSERT_DBG(ctfser); - BT_LOGV_STR("Serializing event's context field."); + BT_LOGT_STR("Serializing event's context field."); if (event->common.context_field) { ret = bt_ctf_field_serialize_recursive( (void *) event->common.context_field, ctfser, @@ -735,7 +727,7 @@ int bt_ctf_event_serialize(struct bt_ctf_event *event, } } - BT_LOGV_STR("Serializing event's payload field."); + BT_LOGT_STR("Serializing event's payload field."); if (event->common.payload_field) { ret = bt_ctf_field_serialize_recursive( (void *) event->common.payload_field, ctfser, @@ -755,12 +747,7 @@ end: return ret; } -BT_HIDDEN -void _bt_ctf_event_freeze(struct bt_ctf_event *event) -{ - _bt_ctf_event_common_set_is_frozen(BT_CTF_TO_COMMON(event), true); -} - +BT_EXPORT int bt_ctf_event_set_header(struct bt_ctf_event *event, struct bt_ctf_field *header) { @@ -791,7 +778,7 @@ int bt_ctf_event_set_header(struct bt_ctf_event *event, bt_ctf_object_put_ref(event->common.header_field->field); event->common.header_field->field = bt_ctf_object_get_ref(header); - BT_LOGV("Set event's header field: event-addr=%p, " + BT_LOGT("Set event's header field: event-addr=%p, " "event-class-name=\"%s\", event-class-id=%" PRId64 ", " "header-field-addr=%p", event, bt_ctf_event_class_common_get_name(event->common.class), @@ -825,7 +812,7 @@ int bt_ctf_event_common_set_payload(struct bt_ctf_event *event, bt_ctf_object_put_ref(event->common.payload_field); event->common.payload_field = bt_ctf_object_get_ref(payload); - BT_LOGV("Set event's payload field: event-addr=%p, " + BT_LOGT("Set event's payload field: event-addr=%p, " "event-class-name=\"%s\", event-class-id=%" PRId64 ", " "payload-field-addr=%p", event, bt_ctf_event_class_common_get_name(event->common.class), @@ -833,6 +820,7 @@ int bt_ctf_event_common_set_payload(struct bt_ctf_event *event, return 0; } +BT_EXPORT int bt_ctf_event_set_context(struct bt_ctf_event *event, struct bt_ctf_field *context) { @@ -858,7 +846,7 @@ int bt_ctf_event_set_context(struct bt_ctf_event *event, bt_ctf_object_put_ref(event->common.context_field); event->common.context_field = bt_ctf_object_get_ref(context); - BT_LOGV("Set event's context field: event-addr=%p, " + BT_LOGT("Set event's context field: event-addr=%p, " "event-class-name=\"%s\", event-class-id=%" PRId64 ", " "context-field-addr=%p", event, bt_ctf_event_class_common_get_name(event->common.class), @@ -866,6 +854,7 @@ int bt_ctf_event_set_context(struct bt_ctf_event *event, return 0; } +BT_EXPORT int bt_ctf_event_set_stream_event_context(struct bt_ctf_event *event, struct bt_ctf_field *stream_event_context) { @@ -893,7 +882,7 @@ int bt_ctf_event_set_stream_event_context(struct bt_ctf_event *event, bt_ctf_object_put_ref(event->common.stream_event_context_field); event->common.stream_event_context_field = bt_ctf_object_get_ref(stream_event_context); - BT_LOGV("Set event's stream event context field: event-addr=%p, " + BT_LOGT("Set event's stream event context field: event-addr=%p, " "event-class-name=\"%s\", event-class-id=%" PRId64 ", " "stream-event-context-field-addr=%p", event, bt_ctf_event_class_common_get_name(event->common.class),