BT_HIDDEN struct bt_ctf_clock *bt_ctf_event_get_clock(struct bt_ctf_event *event) { struct bt_ctf_clock *clock = NULL; struct bt_ctf_event_class *event_class; struct bt_ctf_stream_class *stream_class; if (!event) { goto end; } event_class = bt_ctf_event_get_class(event); if (!event_class) { goto end; } stream_class = bt_ctf_event_class_get_stream_class(event_class); if (!stream_class) { goto error_put_event_class; } clock = bt_ctf_stream_class_get_clock(stream_class); if (!clock) { goto error_put_stream_class; } error_put_stream_class: bt_put(stream_class); error_put_event_class: bt_put(event_class); end: return clock; }
BT_HIDDEN struct bt_ctf_event *trimmer_output_event( struct trimmer_iterator *trim_it, struct bt_ctf_event *event) { struct bt_ctf_event_class *event_class = NULL; struct bt_ctf_event *writer_event = NULL; struct bt_ctf_packet *packet = NULL, *writer_packet = NULL; const char *event_name; int int_ret; event_class = bt_ctf_event_get_class(event); if (!event_class) { fprintf(trim_it->err, "[error] %s in %s:%d\n", __func__, __FILE__, __LINE__); goto error; } event_name = bt_ctf_event_class_get_name(event_class); if (!event_name) { fprintf(trim_it->err, "[error] %s in %s:%d\n", __func__, __FILE__, __LINE__); goto error; } writer_event = ctf_copy_event(trim_it->err, event, event_class, false); if (!writer_event) { fprintf(trim_it->err, "[error] %s in %s:%d\n", __func__, __FILE__, __LINE__); fprintf(trim_it->err, "[error] Failed to copy event %s\n", bt_ctf_event_class_get_name(event_class)); goto error; } packet = bt_ctf_event_get_packet(event); if (!packet) { fprintf(trim_it->err, "[error] %s in %s:%d\n", __func__, __FILE__, __LINE__); goto error; } writer_packet = lookup_packet(trim_it, packet); if (!writer_packet) { fprintf(trim_it->err, "[error] %s in %s:%d\n", __func__, __FILE__, __LINE__); goto error; } bt_get(writer_packet); int_ret = bt_ctf_event_set_packet(writer_event, writer_packet); if (int_ret < 0) { fprintf(trim_it->err, "[error] %s in %s:%d\n", __func__, __FILE__, __LINE__); fprintf(trim_it->err, "[error] Failed to append event %s\n", bt_ctf_event_class_get_name(event_class)); goto error; } /* We keep the reference on the writer_event to create a notification. */ goto end; error: BT_PUT(writer_event); end: bt_put(writer_packet); bt_put(packet); bt_put(event_class); return writer_event; }