-int bt_event_set_clock_value(struct bt_event *event,
- struct bt_clock_value *value)
-{
- int ret = 0;
- struct bt_trace *trace;
- struct bt_stream_class *stream_class;
- struct bt_event_class *event_class;
- struct bt_clock_class *clock_class = NULL;
-
- if (!event || !value) {
- BT_LOGW("Invalid parameter: event or clock value is NULL: "
- "event-addr=%p, clock-value-addr=%p",
- event, value);
- ret = -1;
- goto end;
- }
-
- if (event->frozen) {
- BT_LOGW("Invalid parameter: event is frozen: addr=%p, "
- "event-class-name=\"%s\", event-class-id=%" PRId64,
- event, bt_event_class_get_name(event->event_class),
- bt_event_class_get_id(event->event_class));
- ret = -1;
- goto end;
- }
-
- clock_class = bt_clock_value_get_class(value);
- event_class = bt_event_borrow_event_class(event);
- assert(event_class);
- stream_class = bt_event_class_borrow_stream_class(event_class);
- assert(stream_class);
- trace = bt_stream_class_borrow_trace(stream_class);
- assert(trace);
-
- if (!bt_trace_has_clock_class(trace, clock_class)) {
- BT_LOGW("Invalid parameter: clock class is not part of event's trace: "
- "event-addr=%p, event-class-name=\"%s\", "
- "event-class-id=%" PRId64 ", clock-class-addr=%p, "
- "clock-class-name=\"%s\"",
- event, bt_event_class_get_name(event->event_class),
- bt_event_class_get_id(event->event_class),
- clock_class, bt_clock_class_get_name(clock_class));
- ret = -1;
- goto end;
- }
-
- g_hash_table_insert(event->clock_values, clock_class, bt_get(value));
- BT_LOGV("Set event's clock value: "
- "event-addr=%p, event-class-name=\"%s\", "
- "event-class-id=%" PRId64 ", clock-class-addr=%p, "
- "clock-class-name=\"%s\", clock-value-addr=%p, "
- "clock-value-cycles=%" PRIu64,
- event, bt_event_class_get_name(event->event_class),
- bt_event_class_get_id(event->event_class),
- clock_class, bt_clock_class_get_name(clock_class),
- value, value->value);
- clock_class = NULL;
-
-end:
- bt_put(clock_class);
- return ret;
-}
-
-BT_HIDDEN
-int bt_event_validate(struct bt_event *event)
-{
- /* Make sure each field's payload has been set */
- int ret;
- struct bt_stream_class *stream_class = NULL;
-
- assert(event);
- if (event->event_header) {
- ret = bt_field_validate(event->event_header);
- if (ret) {
- BT_LOGD("Invalid event's header field: "
- "event-addr=%p, event-class-name=\"%s\", "
- "event-class-id=%" PRId64,
- event, bt_event_class_get_name(event->event_class),
- bt_event_class_get_id(event->event_class));
- goto end;
- }
- }
-
- stream_class = bt_event_class_get_stream_class(event->event_class);
- /*
- * We should not have been able to create the event without associating
- * the event class to a stream class.
- */
- assert(stream_class);
- if (stream_class->event_context_type) {
- ret = bt_field_validate(event->stream_event_context);
- if (ret) {
- BT_LOGD("Invalid event's stream event context field: "
- "event-addr=%p, event-class-name=\"%s\", "
- "event-class-id=%" PRId64,
- event,
- bt_event_class_get_name(event->event_class),
- bt_event_class_get_id(event->event_class));
- goto end;
- }
- }
-
- ret = bt_field_validate(event->fields_payload);
- if (ret) {
- BT_LOGD("Invalid event's payload field: "
- "event-addr=%p, event-class-name=\"%s\", "
- "event-class-id=%" PRId64,
- event,
- bt_event_class_get_name(event->event_class),
- bt_event_class_get_id(event->event_class));
- goto end;
- }
-
- if (event->event_class->context) {
- BT_LOGD("Invalid event's context field: "
- "event-addr=%p, event-class-name=\"%s\", "
- "event-class-id=%" PRId64,
- event,
- bt_event_class_get_name(event->event_class),
- bt_event_class_get_id(event->event_class));
- ret = bt_field_validate(event->context_payload);
- }
-end:
- bt_put(stream_class);
- return ret;
-}
-
-BT_HIDDEN
-int bt_event_serialize(struct bt_event *event,
- struct bt_stream_pos *pos,
- enum bt_byte_order native_byte_order)
-{
- int ret = 0;
-
- assert(event);
- assert(pos);
-
- BT_LOGV_STR("Serializing event's context field.");
- if (event->context_payload) {
- ret = bt_field_serialize(event->context_payload, pos,
- native_byte_order);
- if (ret) {
- BT_LOGW("Cannot serialize event's context field: "
- "event-addr=%p, event-class-name=\"%s\", "
- "event-class-id=%" PRId64,
- event,
- bt_event_class_get_name(event->event_class),
- bt_event_class_get_id(event->event_class));
- goto end;
- }
- }
-
- BT_LOGV_STR("Serializing event's payload field.");
- if (event->fields_payload) {
- ret = bt_field_serialize(event->fields_payload, pos,
- native_byte_order);
- if (ret) {
- BT_LOGW("Cannot serialize event's payload field: "
- "event-addr=%p, event-class-name=\"%s\", "
- "event-class-id=%" PRId64,
- event,
- bt_event_class_get_name(event->event_class),
- bt_event_class_get_id(event->event_class));
- goto end;
- }
- }
-end:
- return ret;
-}
-
-struct bt_packet *bt_event_get_packet(struct bt_event *event)