X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=include%2Fbabeltrace%2Fbabeltrace.h;h=c8b0581a4df5772294e2f8d0da254003e302d7a6;hb=d199691ba17cc82d03b7c57a55a44d61f424f752;hp=b7646a1d57320d1edd4e1863f3d243816f160a55;hpb=d63ca2cd2249356c28a63653d30c681e9a7ce249;p=babeltrace.git diff --git a/include/babeltrace/babeltrace.h b/include/babeltrace/babeltrace.h index b7646a1d..c8b0581a 100644 --- a/include/babeltrace/babeltrace.h +++ b/include/babeltrace/babeltrace.h @@ -1,30 +1,87 @@ #ifndef _BABELTRACE_H #define _BABELTRACE_H -#include +/* + * BabelTrace API + * + * Copyright 2010-2011 - Mathieu Desnoyers + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + */ -#define BABELTRACE_VERSION_MAJOR 0 -#define BABELTRACE_VERSION_MINOR 1 +/* Forward declarations */ +struct babeltrace_iter; +struct babeltrace_iter_pos; +struct babeltrace_iter_stream_pos; +struct trace_collection; +struct ctf_stream_event; +struct ctf_stream; -extern int babeltrace_verbose, babeltrace_debug; +/* + * babeltrace_iter_create - Allocate a trace collection iterator. + */ +struct babeltrace_iter *babeltrace_iter_create(struct trace_collection *tc); -#define printf_verbose(fmt, args...) \ - do { \ - if (babeltrace_verbose) \ - printf("[verbose] " fmt, ## args); \ - } while (0) +/* + * babeltrace_iter_destroy - Free a trace collection iterator. + */ +void babeltrace_iter_destroy(struct babeltrace_iter *iter); -#define printf_debug(fmt, args...) \ - do { \ - if (babeltrace_debug) \ - printf("[debug] " fmt, ## args); \ - } while (0) +/* + * babeltrace_iter_next: Move trace collection position to the next event. + * + * Returns 0 on success, a negative value on error + */ +int babeltrace_iter_next(struct babeltrace_iter *iter); -struct trace_descriptor; +/* + * babeltrace_iter_get_pos - Get the current trace collection position. + * + * The position returned by this function needs to be freed by + * babeltrace_iter_free_pos after use. + */ +struct babeltrace_iter_pos * + babeltrace_iter_get_pos(struct babeltrace_iter *iter); -int convert_trace(struct trace_descriptor *td_write, - struct trace_descriptor *td_read); +/* + * babeltrace_iter_free_pos - Free the position. + */ +void babeltrace_iter_free_pos(struct babeltrace_iter_pos *pos); -extern int opt_field_names; +/* + * babeltrace_iter_seek_pos - Seek the trace collection to the position. + */ +int babeltrace_iter_seek_pos(struct babeltrace_iter *iter, + struct babeltrace_iter_pos *pos); -#endif +/* + * babeltrace_iter_seek_time: Seek the trace collection to the given timestamp. + * + * Return EOF if timestamp is after the last event of the trace collection. + * Return other negative value for other errors. + * Return 0 for success. + */ +int babeltrace_iter_seek_time(struct babeltrace_iter *iter, + uint64_t timestamp); + +/* + * babeltrace_iter_read_event: Read the iterator's current event data. + * + * @iter: trace collection iterator (input) + * @stream: stream containing event at current position (output) + * @event: current event (output) + * Return 0 on success, negative error value on error. + */ +int babeltrace_iter_read_event(struct babeltrace_iter *iter, + struct ctf_stream **stream, + struct ctf_stream_event **event); + +#endif /* _BABELTRACE_H */