extern int yydebug;
static
-struct trace_descriptor *ctf_open_trace(const char *path, int flags,
- void (*packet_seek)(struct stream_pos *pos, size_t index,
+struct bt_trace_descriptor *ctf_open_trace(const char *path, int flags,
+ void (*packet_seek)(struct bt_stream_pos *pos, size_t index,
int whence),
FILE *metadata_fp);
static
-struct trace_descriptor *ctf_open_mmap_trace(
- struct mmap_stream_list *mmap_list,
- void (*packet_seek)(struct stream_pos *pos, size_t index,
+struct bt_trace_descriptor *ctf_open_mmap_trace(
+ struct bt_mmap_stream_list *mmap_list,
+ void (*packet_seek)(struct bt_stream_pos *pos, size_t index,
int whence),
FILE *metadata_fp);
static
-void ctf_set_context(struct trace_descriptor *descriptor,
+void ctf_set_context(struct bt_trace_descriptor *descriptor,
struct bt_context *ctx);
static
-void ctf_set_handle(struct trace_descriptor *descriptor,
+void ctf_set_handle(struct bt_trace_descriptor *descriptor,
struct bt_trace_handle *handle);
static
-int ctf_close_trace(struct trace_descriptor *descriptor);
+int ctf_close_trace(struct bt_trace_descriptor *descriptor);
static
-uint64_t ctf_timestamp_begin(struct trace_descriptor *descriptor,
+uint64_t ctf_timestamp_begin(struct bt_trace_descriptor *descriptor,
struct bt_trace_handle *handle, enum bt_clock_type type);
static
-uint64_t ctf_timestamp_end(struct trace_descriptor *descriptor,
+uint64_t ctf_timestamp_end(struct bt_trace_descriptor *descriptor,
struct bt_trace_handle *handle, enum bt_clock_type type);
static
-int ctf_convert_index_timestamp(struct trace_descriptor *tdp);
+int ctf_convert_index_timestamp(struct bt_trace_descriptor *tdp);
static
rw_dispatch read_dispatch_table[] = {
};
static
-struct format ctf_format = {
+struct bt_format ctf_format = {
.open_trace = ctf_open_trace,
.open_mmap_trace = ctf_open_mmap_trace,
.close_trace = ctf_close_trace,
};
static
-uint64_t ctf_timestamp_begin(struct trace_descriptor *descriptor,
+uint64_t ctf_timestamp_begin(struct bt_trace_descriptor *descriptor,
struct bt_trace_handle *handle, enum bt_clock_type type)
{
struct ctf_trace *tin;
}
static
-uint64_t ctf_timestamp_end(struct trace_descriptor *descriptor,
+uint64_t ctf_timestamp_end(struct bt_trace_descriptor *descriptor,
struct bt_trace_handle *handle, enum bt_clock_type type)
{
struct ctf_trace *tin;
}
static
-int ctf_read_event(struct stream_pos *ppos, struct ctf_stream_definition *stream)
+int ctf_read_event(struct bt_stream_pos *ppos, struct ctf_stream_definition *stream)
{
struct ctf_stream_pos *pos =
container_of(ppos, struct ctf_stream_pos, parent);
/* Read event header */
if (likely(stream->stream_event_header)) {
struct definition_integer *integer_definition;
- struct definition *variant;
+ struct bt_definition *variant;
ret = generic_rw(ppos, &stream->stream_event_header->p);
if (unlikely(ret))
}
static
-int ctf_write_event(struct stream_pos *pos, struct ctf_stream_definition *stream)
+int ctf_write_event(struct bt_stream_pos *pos, struct ctf_stream_definition *stream)
{
struct ctf_stream_declaration *stream_class = stream->stream_class;
struct ctf_event_definition *event;
* for SEEK_CUR: go to next packet.
* for SEEK_POS: go to packet numer (index).
*/
-void ctf_packet_seek(struct stream_pos *stream_pos, size_t index, int whence)
+void ctf_packet_seek(struct bt_stream_pos *stream_pos, size_t index, int whence)
{
struct ctf_stream_pos *pos =
container_of(stream_pos, struct ctf_stream_pos, parent);
char **buf)
{
FILE *in, *out;
- size_t size;
+ size_t size, buflen;
int ret;
in = *fp;
perror("Error in fclose");
}
/* open for reading */
- *fp = babeltrace_fmemopen(*buf, strlen(*buf), "rb");
+ buflen = strlen(*buf);
+ if (!buflen) {
+ *fp = NULL;
+ return -ENODATA;
+ }
+ *fp = babeltrace_fmemopen(*buf, buflen, "rb");
if (!*fp) {
perror("Metadata fmemopen");
return -errno;
static
int ctf_open_trace_metadata_read(struct ctf_trace *td,
- void (*packet_seek)(struct stream_pos *pos, size_t index,
+ void (*packet_seek)(struct bt_stream_pos *pos, size_t index,
int whence), FILE *metadata_fp)
{
struct ctf_scanner *scanner;
if (packet_metadata(td, fp)) {
ret = ctf_open_trace_metadata_stream_read(td, &fp, &buf);
- if (ret)
+ if (ret) {
+ /* Warn about empty metadata */
+ fprintf(stderr, "[warning] Empty metadata.\n");
goto end_packet_read;
+ }
} else {
unsigned int major, minor;
ssize_t nr_items;
struct ctf_event_definition *stream_event = g_new0(struct ctf_event_definition, 1);
if (event->context_decl) {
- struct definition *definition =
+ struct bt_definition *definition =
event->context_decl->p.definition_new(&event->context_decl->p,
stream->parent_def_scope, 0, 0, "event.context");
if (!definition) {
stream->parent_def_scope = stream_event->event_context->p.scope;
}
if (event->fields_decl) {
- struct definition *definition =
+ struct bt_definition *definition =
event->fields_decl->p.definition_new(&event->fields_decl->p,
stream->parent_def_scope, 0, 0, "event.fields");
if (!definition) {
stream_class = stream->stream_class;
if (stream_class->packet_context_decl) {
- struct definition *definition =
+ struct bt_definition *definition =
stream_class->packet_context_decl->p.definition_new(&stream_class->packet_context_decl->p,
stream->parent_def_scope, 0, 0, "stream.packet.context");
if (!definition) {
stream->parent_def_scope = stream->stream_packet_context->p.scope;
}
if (stream_class->event_header_decl) {
- struct definition *definition =
+ struct bt_definition *definition =
stream_class->event_header_decl->p.definition_new(&stream_class->event_header_decl->p,
stream->parent_def_scope, 0, 0, "stream.event.header");
if (!definition) {
stream->parent_def_scope = stream->stream_event_header->p.scope;
}
if (stream_class->event_context_decl) {
- struct definition *definition =
+ struct bt_definition *definition =
stream_class->event_context_decl->p.definition_new(&stream_class->event_context_decl->p,
stream->parent_def_scope, 0, 0, "stream.event.context");
if (!definition) {
return ret;
len_index = bt_struct_declaration_lookup_field_index(file_stream->parent.trace_packet_header->declaration, g_quark_from_static_string("magic"));
if (len_index >= 0) {
- struct definition *field;
+ struct bt_definition *field;
uint64_t magic;
field = bt_struct_definition_get_field_from_index(file_stream->parent.trace_packet_header, len_index);
len_index = bt_struct_declaration_lookup_field_index(file_stream->parent.trace_packet_header->declaration, g_quark_from_static_string("uuid"));
if (len_index >= 0) {
struct definition_array *defarray;
- struct definition *field;
+ struct bt_definition *field;
uint64_t i;
uint8_t uuidval[BABELTRACE_UUID_LEN];
assert(bt_array_len(defarray) == BABELTRACE_UUID_LEN);
for (i = 0; i < BABELTRACE_UUID_LEN; i++) {
- struct definition *elem;
+ struct bt_definition *elem;
elem = bt_array_index(defarray, i);
uuidval[i] = bt_get_unsigned_int(elem);
len_index = bt_struct_declaration_lookup_field_index(file_stream->parent.trace_packet_header->declaration, g_quark_from_static_string("stream_id"));
if (len_index >= 0) {
- struct definition *field;
+ struct bt_definition *field;
field = bt_struct_definition_get_field_from_index(file_stream->parent.trace_packet_header, len_index);
stream_id = bt_get_unsigned_int(field);
}
if (!first_packet && file_stream->parent.stream_id != stream_id) {
- fprintf(stderr, "[error] Stream ID is changing within a stream.\n");
+ fprintf(stderr, "[error] Stream ID is changing within a stream: expecting %" PRIu64 ", but packet has %" PRIu64 "\n",
+ stream_id,
+ file_stream->parent.stream_id);
return -EINVAL;
}
if (first_packet) {
/* read content size from header */
len_index = bt_struct_declaration_lookup_field_index(file_stream->parent.stream_packet_context->declaration, g_quark_from_static_string("content_size"));
if (len_index >= 0) {
- struct definition *field;
+ struct bt_definition *field;
field = bt_struct_definition_get_field_from_index(file_stream->parent.stream_packet_context, len_index);
packet_index.content_size = bt_get_unsigned_int(field);
/* read packet size from header */
len_index = bt_struct_declaration_lookup_field_index(file_stream->parent.stream_packet_context->declaration, g_quark_from_static_string("packet_size"));
if (len_index >= 0) {
- struct definition *field;
+ struct bt_definition *field;
field = bt_struct_definition_get_field_from_index(file_stream->parent.stream_packet_context, len_index);
packet_index.packet_size = bt_get_unsigned_int(field);
/* read timestamp begin from header */
len_index = bt_struct_declaration_lookup_field_index(file_stream->parent.stream_packet_context->declaration, g_quark_from_static_string("timestamp_begin"));
if (len_index >= 0) {
- struct definition *field;
+ struct bt_definition *field;
field = bt_struct_definition_get_field_from_index(file_stream->parent.stream_packet_context, len_index);
packet_index.timestamp_begin = bt_get_unsigned_int(field);
/* read timestamp end from header */
len_index = bt_struct_declaration_lookup_field_index(file_stream->parent.stream_packet_context->declaration, g_quark_from_static_string("timestamp_end"));
if (len_index >= 0) {
- struct definition *field;
+ struct bt_definition *field;
field = bt_struct_definition_get_field_from_index(file_stream->parent.stream_packet_context, len_index);
packet_index.timestamp_end = bt_get_unsigned_int(field);
/* read events discarded from header */
len_index = bt_struct_declaration_lookup_field_index(file_stream->parent.stream_packet_context->declaration, g_quark_from_static_string("events_discarded"));
if (len_index >= 0) {
- struct definition *field;
+ struct bt_definition *field;
field = bt_struct_definition_get_field_from_index(file_stream->parent.stream_packet_context, len_index);
packet_index.events_discarded = bt_get_unsigned_int(field);
int ret;
if (td->packet_header_decl) {
- struct definition *definition =
+ struct bt_definition *definition =
td->packet_header_decl->p.definition_new(&td->packet_header_decl->p,
stream->parent_def_scope, 0, 0, "trace.packet.header");
if (!definition) {
*/
static
int ctf_open_file_stream_read(struct ctf_trace *td, const char *path, int flags,
- void (*packet_seek)(struct stream_pos *pos, size_t index,
+ void (*packet_seek)(struct bt_stream_pos *pos, size_t index,
int whence))
{
int ret, fd, closeret;
static
int ctf_open_trace_read(struct ctf_trace *td,
const char *path, int flags,
- void (*packet_seek)(struct stream_pos *pos, size_t index,
+ void (*packet_seek)(struct bt_stream_pos *pos, size_t index,
int whence), FILE *metadata_fp)
{
int ret, closeret;
* since the index creation read it entirely.
*/
static
-struct trace_descriptor *ctf_open_trace(const char *path, int flags,
- void (*packet_seek)(struct stream_pos *pos, size_t index,
+struct bt_trace_descriptor *ctf_open_trace(const char *path, int flags,
+ void (*packet_seek)(struct bt_stream_pos *pos, size_t index,
int whence), FILE *metadata_fp)
{
struct ctf_trace *td;
static
void ctf_init_mmap_pos(struct ctf_stream_pos *pos,
- struct mmap_stream *mmap_info)
+ struct bt_mmap_stream *mmap_info)
{
pos->mmap_offset = 0;
pos->packet_size = 0;
static
int ctf_open_mmap_stream_read(struct ctf_trace *td,
- struct mmap_stream *mmap_info,
- void (*packet_seek)(struct stream_pos *pos, size_t index,
+ struct bt_mmap_stream *mmap_info,
+ void (*packet_seek)(struct bt_stream_pos *pos, size_t index,
int whence))
{
int ret;
static
int ctf_open_mmap_trace_read(struct ctf_trace *td,
- struct mmap_stream_list *mmap_list,
- void (*packet_seek)(struct stream_pos *pos, size_t index,
+ struct bt_mmap_stream_list *mmap_list,
+ void (*packet_seek)(struct bt_stream_pos *pos, size_t index,
int whence),
FILE *metadata_fp)
{
int ret;
- struct mmap_stream *mmap_info;
+ struct bt_mmap_stream *mmap_info;
ret = ctf_open_trace_metadata_read(td, ctf_packet_seek, metadata_fp);
if (ret) {
}
static
-struct trace_descriptor *ctf_open_mmap_trace(
- struct mmap_stream_list *mmap_list,
- void (*packet_seek)(struct stream_pos *pos, size_t index,
+struct bt_trace_descriptor *ctf_open_mmap_trace(
+ struct bt_mmap_stream_list *mmap_list,
+ void (*packet_seek)(struct bt_stream_pos *pos, size_t index,
int whence),
FILE *metadata_fp)
{
}
static
-int ctf_convert_index_timestamp(struct trace_descriptor *tdp)
+int ctf_convert_index_timestamp(struct bt_trace_descriptor *tdp)
{
int i, j, k;
struct ctf_trace *td = container_of(tdp, struct ctf_trace, parent);
}
static
-int ctf_close_trace(struct trace_descriptor *tdp)
+int ctf_close_trace(struct bt_trace_descriptor *tdp)
{
struct ctf_trace *td = container_of(tdp, struct ctf_trace, parent);
int ret;
}
static
-void ctf_set_context(struct trace_descriptor *descriptor,
+void ctf_set_context(struct bt_trace_descriptor *descriptor,
struct bt_context *ctx)
{
struct ctf_trace *td = container_of(descriptor, struct ctf_trace,
}
static
-void ctf_set_handle(struct trace_descriptor *descriptor,
+void ctf_set_handle(struct bt_trace_descriptor *descriptor,
struct bt_trace_handle *handle)
{
struct ctf_trace *td = container_of(descriptor, struct ctf_trace,