diff -Nru babeltrace-0.1~pre/ChangeLog babeltrace-0.1~pre/ChangeLog --- babeltrace-0.1~pre/ChangeLog 2011-09-29 05:19:35.000000000 +0000 +++ babeltrace-0.1~pre/ChangeLog 2011-09-30 18:41:17.000000000 +0000 @@ -1,6 +1,32 @@ +2011-09-29 Babeltrace 0.7 + * Add missing stdint.h + * Use integer extraction functions + * Extract int and char arrays from fields + * Add parameters to callbacks + * Fix float support + * Fix type cast warning + * Integer support: add missing signed casts + * Remove underscore prefix from field names (pretty-print) + * Fix sequence iteration + * Fix sequence field name use after free + * Fix support for empty streams + * Optional file pointer to metadata + * Specify callback to move packet in open_trace + * Free the callbacks on iter_destroy + * Add callback support + * Basic seek support + * Add callback API + * Enhance babeltrace API with position save/restore + * Remove unused structure forward declarations + * Remove stale local .c struct declarations (unused) + * Annotate branches in ctf.c event reading/writing code + * Annotate prio heap likely branch + * Annotate likely/unlikely branches in headers + 2011-08-12 Babeltrace 0.6 * Introduce Babeltrace public API: babeltrace.h * Fix support for gold linker: inappropriate dep removal of plugins + 2011-08-12 Babeltrace 0.5 * Initialize size to 0 to eliminate incorrect gcc uninitialized var warning diff -Nru babeltrace-0.1~pre/configure.ac babeltrace-0.1~pre/configure.ac --- babeltrace-0.1~pre/configure.ac 2011-09-29 05:19:35.000000000 +0000 +++ babeltrace-0.1~pre/configure.ac 2011-09-30 18:41:17.000000000 +0000 @@ -1,7 +1,7 @@ # -*- Autoconf -*- # Process this file with autoconf to produce a configure script. -AC_INIT([babeltrace], [0.6], [mathieu dot desnoyers at efficios dot com]) +AC_INIT([babeltrace], [0.7], [mathieu dot desnoyers at efficios dot com]) AC_CONFIG_AUX_DIR([config]) AC_CANONICAL_TARGET AC_CANONICAL_HOST diff -Nru babeltrace-0.1~pre/converter/babeltrace-lib.c babeltrace-0.1~pre/converter/babeltrace-lib.c --- babeltrace-0.1~pre/converter/babeltrace-lib.c 2011-09-29 05:19:35.000000000 +0000 +++ babeltrace-0.1~pre/converter/babeltrace-lib.c 2011-09-30 18:41:17.000000000 +0000 @@ -505,6 +505,7 @@ struct bt_ctf_data ctf_data; ctf_data.event = extract_ctf_stream_event(stream); + ctf_data.stream = stream; /* process all events callback first */ if (iter->main_callbacks.callback) { diff -Nru babeltrace-0.1~pre/debian/bzr-builder.manifest babeltrace-0.1~pre/debian/bzr-builder.manifest --- babeltrace-0.1~pre/debian/bzr-builder.manifest 2011-09-29 05:19:36.000000000 +0000 +++ babeltrace-0.1~pre/debian/bzr-builder.manifest 2011-09-30 18:41:17.000000000 +0000 @@ -1,3 +1,3 @@ -# bzr-builder format 0.3 deb-version {debupstream}-0+bzr310+pack4+201109290519 -lp:babeltrace revid:git-v1:fd2740e3ec2c51f1a30b2336595e679952bc2251 +# bzr-builder format 0.3 deb-version {debupstream}-0+bzr313+pack4+201109301841 +lp:babeltrace revid:git-v1:f571dfb1ed9909c45274be95489e10f5c1432ff3 nest packaging lp:~lttng/babeltrace/packaging.trunk debian revid:alexandre.montplaisir@gmail.com-20110813074604-tf0imheh9m1p46rm diff -Nru babeltrace-0.1~pre/debian/changelog babeltrace-0.1~pre/debian/changelog --- babeltrace-0.1~pre/debian/changelog 2011-09-29 05:19:36.000000000 +0000 +++ babeltrace-0.1~pre/debian/changelog 2011-09-30 18:41:17.000000000 +0000 @@ -1,8 +1,8 @@ -babeltrace (0.1~pre-0+bzr310+pack4+201109290519~natty1) unstable; urgency=low +babeltrace (0.1~pre-0+bzr313+pack4+201109301841~natty1) unstable; urgency=low * Auto build. - -- Avik Sil Thu, 29 Sep 2011 05:19:36 +0000 + -- Avik Sil Fri, 30 Sep 2011 18:41:17 +0000 babeltrace (0.1~pre-0~lttng1) unstable; urgency=low diff -Nru babeltrace-0.1~pre/formats/ctf/ctf.c babeltrace-0.1~pre/formats/ctf/ctf.c --- babeltrace-0.1~pre/formats/ctf/ctf.c 2011-09-29 05:19:35.000000000 +0000 +++ babeltrace-0.1~pre/formats/ctf/ctf.c 2011-09-30 18:41:17.000000000 +0000 @@ -59,6 +59,12 @@ void (*move_pos_slow)(struct ctf_stream_pos *pos, size_t offset, int whence), FILE *metadata_fp); static +struct trace_descriptor *ctf_open_mmap_trace( + struct mmap_stream_list *mmap_list, + void (*move_pos_slow)(struct ctf_stream_pos *pos, size_t offset, int whence), + FILE *metadata_fp); + +static void ctf_close_trace(struct trace_descriptor *descriptor); static @@ -88,6 +94,7 @@ static struct format ctf_format = { .open_trace = ctf_open_trace, + .open_mmap_trace = ctf_open_mmap_trace, .close_trace = ctf_close_trace, }; @@ -1239,6 +1246,153 @@ return NULL; } + +void ctf_init_mmap_pos(struct ctf_stream_pos *pos, + struct mmap_stream *mmap_info) +{ + pos->mmap_offset = 0; + pos->packet_size = 0; + pos->content_size = 0; + pos->content_size_loc = NULL; + pos->fd = mmap_info->fd; + pos->base = 0; + pos->offset = 0; + pos->dummy = false; + pos->cur_index = 0; + pos->packet_index = NULL; + pos->prot = PROT_READ; + pos->flags = MAP_PRIVATE; + pos->parent.rw_table = read_dispatch_table; + pos->parent.event_cb = ctf_read_event; +} + +static +int prepare_mmap_stream_definition(struct ctf_trace *td, + struct ctf_file_stream *file_stream) +{ + struct ctf_stream_class *stream; + uint64_t stream_id = 0; + int ret; + + file_stream->parent.stream_id = stream_id; + if (stream_id >= td->streams->len) { + fprintf(stdout, "[error] Stream %" PRIu64 " is not declared " + "in metadata.\n", stream_id); + ret = -EINVAL; + goto end; + } + stream = g_ptr_array_index(td->streams, stream_id); + if (!stream) { + fprintf(stdout, "[error] Stream %" PRIu64 " is not declared " + "in metadata.\n", stream_id); + ret = -EINVAL; + goto end; + } + file_stream->parent.stream_class = stream; + ret = create_stream_definitions(td, &file_stream->parent); +end: + return ret; +} + +static +int ctf_open_mmap_stream_read(struct ctf_trace *td, + struct mmap_stream *mmap_info, + void (*move_pos_slow)(struct ctf_stream_pos *pos, size_t offset, + int whence)) +{ + int ret; + struct ctf_file_stream *file_stream; + + file_stream = g_new0(struct ctf_file_stream, 1); + ctf_init_mmap_pos(&file_stream->pos, mmap_info); + + file_stream->pos.move_pos_slow = move_pos_slow; + + ret = create_trace_definitions(td, &file_stream->parent); + if (ret) { + goto error_def; + } + + ret = prepare_mmap_stream_definition(td, file_stream); + if (ret) + goto error_index; + + /* Add stream file to stream class */ + g_ptr_array_add(file_stream->parent.stream_class->streams, + &file_stream->parent); + return 0; + +error_index: + if (file_stream->parent.trace_packet_header) + definition_unref(&file_stream->parent.trace_packet_header->p); +error_def: + g_free(file_stream); + return ret; +} + +int ctf_open_mmap_trace_read(struct ctf_trace *td, + struct mmap_stream_list *mmap_list, + void (*move_pos_slow)(struct ctf_stream_pos *pos, size_t offset, + int whence), + FILE *metadata_fp) +{ + int ret; + struct mmap_stream *mmap_info; + + ret = ctf_open_trace_metadata_read(td, ctf_move_pos_slow, metadata_fp); + if (ret) { + goto error; + } + + /* + * for each stream, try to open, check magic number, and get the + * stream ID to add to the right location in the stream array. + */ + cds_list_for_each_entry(mmap_info, &mmap_list->head, list) { + ret = ctf_open_mmap_stream_read(td, mmap_info, move_pos_slow); + if (ret) { + fprintf(stdout, "[error] Open file mmap stream error.\n"); + goto error; + } + } + + return 0; + +error: + return ret; +} + +static +struct trace_descriptor *ctf_open_mmap_trace( + struct mmap_stream_list *mmap_list, + void (*move_pos_slow)(struct ctf_stream_pos *pos, size_t offset, int whence), + FILE *metadata_fp) +{ + struct ctf_trace *td; + int ret; + + if (!metadata_fp) { + fprintf(stderr, "[error] No metadata file pointer associated, " + "required for mmap parsing\n"); + goto error; + } + if (!move_pos_slow) { + fprintf(stderr, "[error] move_pos_slow function undefined.\n"); + goto error; + } + td = g_new0(struct ctf_trace, 1); + ret = ctf_open_mmap_trace_read(td, mmap_list, move_pos_slow, metadata_fp); + if (ret) + goto error_free; + + return &td->parent; + +error_free: + g_free(td); +error: + return NULL; +} + static void ctf_close_file_stream(struct ctf_file_stream *file_stream) { diff -Nru babeltrace-0.1~pre/include/babeltrace/babeltrace.h babeltrace-0.1~pre/include/babeltrace/babeltrace.h --- babeltrace-0.1~pre/include/babeltrace/babeltrace.h 2011-09-29 05:19:35.000000000 +0000 +++ babeltrace-0.1~pre/include/babeltrace/babeltrace.h 2011-09-30 18:41:17.000000000 +0000 @@ -53,6 +53,7 @@ struct bt_ctf_data { struct ctf_stream_event *event; + struct ctf_stream *stream; }; /* diff -Nru babeltrace-0.1~pre/include/babeltrace/format.h babeltrace-0.1~pre/include/babeltrace/format.h --- babeltrace-0.1~pre/include/babeltrace/format.h 2011-09-29 05:19:35.000000000 +0000 +++ babeltrace-0.1~pre/include/babeltrace/format.h 2011-09-30 18:41:17.000000000 +0000 @@ -31,12 +31,25 @@ struct trace_descriptor { }; +struct mmap_stream { + int fd; + struct cds_list_head list; +}; + +struct mmap_stream_list { + struct cds_list_head head; +}; + struct format { GQuark name; struct trace_descriptor *(*open_trace)(const char *path, int flags, void (*move_pos_slow)(struct ctf_stream_pos *pos, size_t offset, int whence), FILE *metadata_fp); + struct trace_descriptor *(*open_mmap_trace)( + struct mmap_stream_list *mmap_list, + void (*move_pos_slow)(struct ctf_stream_pos *pos, size_t offset, + int whence), FILE *metadata_fp); void (*close_trace)(struct trace_descriptor *descriptor); };