Example #1
0
static
int convert_trace(struct bt_trace_descriptor *td_write,
		  struct bt_context *ctx)
{
	struct bt_ctf_iter *iter;
	struct ctf_text_stream_pos *sout;
	struct bt_iter_pos *begin_pos = NULL, *end_pos = NULL;
	struct bt_ctf_event *ctf_event;
	int ret;

	sout = container_of(td_write, struct ctf_text_stream_pos,
			trace_descriptor);

	if (!sout->parent.event_cb) {
		return 0;
	}

	if (opt_stream_intersection) {
		iter = bt_ctf_iter_create_intersect(ctx, &begin_pos, &end_pos);
	} else {
		begin_pos = bt_iter_create_time_pos(NULL, 0);
		begin_pos->type = BT_SEEK_BEGIN;
		iter = bt_ctf_iter_create(ctx, begin_pos, NULL);
	}
	if (!iter) {
		ret = -1;
		goto error_iter;
	}
	while ((ctf_event = bt_ctf_iter_read_event(iter))) {
		ret = sout->parent.event_cb(&sout->parent, ctf_event->parent->stream);
		if (ret) {
			fprintf(stderr, "[error] Writing event failed.\n");
			goto end;
		}
		ret = bt_iter_next(bt_ctf_get_iter(iter));
		if (ret < 0) {
			goto end;
		}
	}
	ret = 0;

end:
	bt_ctf_iter_destroy(iter);
error_iter:
	bt_iter_free_pos(begin_pos);
	bt_iter_free_pos(end_pos);
	return ret;
}
Example #2
0
int set_values_position(const LttvTracesetPosition *pos)
{
	LttvTracesetPosition previous_pos;
	previous_pos.iter = pos->iter;
	previous_pos.bt_pos = bt_iter_get_pos(bt_ctf_get_iter(pos->iter));
	/* Seek to the new desired position */
	lttv_traceset_seek_to_position(pos);
	/*Read the event*/
	struct bt_ctf_event *event = bt_ctf_iter_read_event(pos->iter);

	if(event != NULL){
		((LttvTracesetPosition *)pos)->timestamp = bt_ctf_get_timestamp(event); 
		
		LttvEvent lttv_event;
		lttv_event.bt_event = event;
		((LttvTracesetPosition *)pos)->cpu_id = lttv_traceset_get_cpuid_from_event(&lttv_event);
	}
	else {
		/* The event is null */
		return 0;
	}

	/* Reassign the previously saved position */
	lttv_traceset_seek_to_position(&previous_pos);
	/*We must desallocate because the function bt_iter_get_pos() does a g_new */
	bt_iter_free_pos(previous_pos.bt_pos);
	if (pos->timestamp == G_MAXUINT64) {
	  return 0;
	}
	return 1;
}
Example #3
0
void lttv_traceset_destroy_position(LttvTracesetPosition *traceset_pos)
{
	bt_iter_free_pos(traceset_pos->bt_pos);
	g_free(traceset_pos);
}