int ret;
memset(&pos, 0, sizeof(pos));
- ret = ctf_init_pos(&pos, output, O_RDWR);
+ ret = ctf_init_pos(&pos, NULL, output, O_RDWR);
if (ret) {
fprintf(stderr, "Error in ctf_init_pos\n");
return;
pos = g_new0(struct ctf_text_stream_pos, 1);
pos->parent.rw_table = NULL;
pos->parent.event_cb = bt_dummy_write_event;
+ pos->parent.trace = &pos->trace_descriptor;
return &pos->trace_descriptor;
}
goto error;
pos->fp = fp;
pos->parent.pre_trace_cb = ctf_metadata_trace_pre_handler;
+ pos->parent.trace = &pos->trace_descriptor;
pos->print_names = 0;
break;
case O_RDONLY:
pos->fp = fp;
pos->parent.rw_table = write_dispatch_table;
pos->parent.event_cb = ctf_text_write_event;
+ pos->parent.trace = &pos->trace_descriptor;
pos->print_names = 0;
break;
case O_RDONLY:
return ret;
}
-int ctf_init_pos(struct ctf_stream_pos *pos, int fd, int open_flags)
+int ctf_init_pos(struct ctf_stream_pos *pos, struct bt_trace_descriptor *trace,
+ int fd, int open_flags)
{
pos->fd = fd;
if (fd >= 0) {
pos->flags = MAP_PRIVATE;
pos->parent.rw_table = read_dispatch_table;
pos->parent.event_cb = ctf_read_event;
+ pos->parent.trace = trace;
break;
case O_RDWR:
pos->prot = PROT_WRITE; /* Write has priority */
pos->flags = MAP_SHARED;
pos->parent.rw_table = write_dispatch_table;
pos->parent.event_cb = ctf_write_event;
+ pos->parent.trace = trace;
if (fd >= 0)
ctf_packet_seek(&pos->parent, 0, SEEK_SET); /* position for write */
break;
goto error_def;
}
- ret = ctf_init_pos(&file_stream->pos, fd, flags);
+ ret = ctf_init_pos(&file_stream->pos, &td->parent, fd, flags);
if (ret)
goto error_def;
ret = create_trace_definitions(td, &file_stream->parent);
}
tmpfloat = container_of(tmpdef, struct definition_float, p);
memset(&destp, 0, sizeof(destp));
- ctf_init_pos(&destp, -1, O_RDWR);
+ ctf_init_pos(&destp, NULL, -1, O_RDWR);
mmap_align_set_addr(&mma, (char *) u.bits);
destp.base_mma = &mma;
destp.packet_size = sizeof(u) * CHAR_BIT;
goto end;
}
tmpfloat = container_of(tmpdef, struct definition_float, p);
- ctf_init_pos(&srcp, -1, O_RDONLY);
+ ctf_init_pos(&srcp, NULL, -1, O_RDONLY);
mmap_align_set_addr(&mma, (char *) u.bits);
srcp.base_mma = &mma;
srcp.packet_size = sizeof(u) * CHAR_BIT;
void ctf_packet_seek(struct bt_stream_pos *pos, size_t index, int whence);
-int ctf_init_pos(struct ctf_stream_pos *pos, int fd, int open_flags);
+int ctf_init_pos(struct ctf_stream_pos *pos, struct bt_trace_descriptor *trace,
+ int fd, int open_flags);
int ctf_fini_pos(struct ctf_stream_pos *pos);
/*
struct bt_trace_descriptor *trace);
int (*post_trace_cb)(struct bt_stream_pos *pos,
struct bt_trace_descriptor *trace);
+ struct bt_trace_descriptor *trace;
};
static inline