From 0d4c669fab9287d78d5d34e3de9e1e701da431cb Mon Sep 17 00:00:00 2001 From: Mathieu Desnoyers Date: Fri, 17 Feb 2012 15:03:59 -0500 Subject: [PATCH] Fix open_mmap_trace missing support Signed-off-by: Mathieu Desnoyers --- converter/babeltrace.c | 2 +- include/babeltrace/context.h | 10 +++++++++- lib/context.c | 26 +++++++++++++++++++------- 3 files changed, 29 insertions(+), 9 deletions(-) diff --git a/converter/babeltrace.c b/converter/babeltrace.c index baffb195..6905070a 100644 --- a/converter/babeltrace.c +++ b/converter/babeltrace.c @@ -378,7 +378,7 @@ int bt_context_add_traces_recursive(struct bt_context *ctx, const char *path, trace_id = bt_context_add_trace(ctx, node->fts_accpath, format_str, - packet_seek); + packet_seek, NULL, NULL); if (trace_id < 0) { fprintf(stderr, "[error] [Context] opening trace \"%s\" from %s " "for reading.\n", node->fts_accpath, path); diff --git a/include/babeltrace/context.h b/include/babeltrace/context.h index ba42dbd0..4ad17971 100644 --- a/include/babeltrace/context.h +++ b/include/babeltrace/context.h @@ -24,6 +24,7 @@ */ #include +#include /* struct bt_context is opaque to the user */ struct bt_context; @@ -51,13 +52,20 @@ struct bt_context *bt_context_create(void); * and a "whence" parameter (either SEEK_CUR: seek to next packet, or * SEEK_SET: seek to packet at packet index). * + * If "path" is NULL, stream_list is used instread as a list of streams + * to open for the trace. + + * The metadata parameter acts as a metadata override when not NULL. + * * Return: the trace handle id (>= 0) on success, a negative * value on error. */ int bt_context_add_trace(struct bt_context *ctx, const char *path, const char *format, void (*packet_seek)(struct stream_pos *pos, - size_t index, int whence)); + size_t index, int whence), + struct mmap_stream_list *stream_list, + FILE *metadata); /* * bt_context_remove_trace: Remove a trace from the context. diff --git a/lib/context.c b/lib/context.c index 1311b5c2..0c20ed53 100644 --- a/lib/context.c +++ b/lib/context.c @@ -59,7 +59,9 @@ struct bt_context *bt_context_create(void) int bt_context_add_trace(struct bt_context *ctx, const char *path, const char *format_name, void (*packet_seek)(struct stream_pos *pos, size_t index, - int whence)) + int whence), + struct mmap_stream_list *stream_list, + FILE *metadata) { struct trace_descriptor *td; struct format *fmt; @@ -73,12 +75,22 @@ int bt_context_add_trace(struct bt_context *ctx, const char *path, ret = -1; goto end; } - td = fmt->open_trace(path, O_RDONLY, packet_seek, NULL); - if (!td) { - fprintf(stderr, "[error] [Context] Cannot open_trace of the format %s .\n\n", - path); - ret = -1; - goto end; + if (path) { + td = fmt->open_trace(path, O_RDONLY, packet_seek, NULL); + if (!td) { + fprintf(stderr, "[error] [Context] Cannot open_trace of the format %s .\n\n", + path); + ret = -1; + goto end; + } + } else { + td = fmt->open_mmap_trace(stream_list, packet_seek, metadata); + if (!td) { + fprintf(stderr, "[error] [Context] Cannot open_trace of the format %s .\n\n", + path); + ret = -1; + goto end; + } } /* Create an handle for the trace */ -- 2.34.1