+void _bt_event_freeze(struct bt_event *event);
+
+#ifdef BT_DEV_MODE
+# define bt_event_common_validate _bt_event_common_validate
+# define bt_event_common_freeze _bt_event_common_freeze
+# define bt_event_freeze _bt_event_freeze
+#else
+# define bt_event_common_validate(_event) 0
+# define bt_event_common_freeze(_event)
+# define bt_event_freeze(_event)
+#endif
+
+#define BT_ASSERT_PRE_EVENT_COMMON_HOT(_event, _name) \
+ BT_ASSERT_PRE_HOT((_event), (_name), ": +%!+_e", (_event))
+
+static inline
+struct bt_event_class_common *bt_event_common_borrow_class(
+ struct bt_event_common *event)
+{
+ BT_ASSERT(event);
+ return event->class;
+}
+
+BT_HIDDEN
+int bt_event_common_initialize(struct bt_event_common *event,
+ struct bt_event_class_common *event_class,
+ struct bt_clock_class *init_expected_clock_class,
+ bt_object_release_func release_func,
+ bt_validation_flag_copy_field_type_func field_type_copy_func,
+ bool must_be_in_trace,
+ int (*map_clock_classes_func)(struct bt_stream_class_common *stream_class,
+ struct bt_field_type_common *packet_context_field_type,
+ struct bt_field_type_common *event_header_field_type),
+ void *(*create_field_func)(void *),
+ void (*release_field_func)(void *),
+ void *(*create_header_field_func)(void *, void *),
+ void (*release_header_field_func)(void *));
+
+static inline
+struct bt_field_common *bt_event_common_borrow_payload(
+ struct bt_event_common *event)
+{
+ struct bt_field_common *payload = NULL;
+
+ BT_ASSERT_PRE_NON_NULL(event, "Event");
+
+ if (!event->payload_field) {
+ BT_LOGV("Event has no current payload field: addr=%p, "
+ "event-class-name=\"%s\", event-class-id=%" PRId64,
+ event, bt_event_class_common_get_name(event->class),
+ bt_event_class_common_get_id(event->class));
+ goto end;
+ }
+
+ payload = event->payload_field;
+
+end:
+ return payload;
+}
+
+static inline
+struct bt_field_common *bt_event_common_borrow_header(
+ struct bt_event_common *event)
+{
+ struct bt_field_common *header = NULL;
+
+ BT_ASSERT_PRE_NON_NULL(event, "Event");
+
+ if (!event->header_field) {
+ BT_LOGV("Event has no current header field: addr=%p, "
+ "event-class-name=\"%s\", event-class-id=%" PRId64,
+ event, bt_event_class_common_get_name(event->class),
+ bt_event_class_common_get_id(event->class));
+ goto end;
+ }
+
+ header = event->header_field->field;