@@ -31,6 +31,11 @@ struct tep_plugin_list *trace_load_plugins(struct tep_handle *tep, int flags);
int *tracecmd_add_id(int *list, int id, int len);
+#define FILE_VERSION_MIN 6
+#define FILE_VERSION_MAX 7
+
+#define FILE_VERSION_SECTIONS 7
+
enum {
RINGBUF_TYPE_PADDING = 29,
RINGBUF_TYPE_TIME_EXTEND = 30,
@@ -43,6 +48,7 @@ void tracecmd_set_debug(bool set_debug);
bool tracecmd_get_debug(void);
bool tracecmd_is_version_supported(unsigned int version);
+int tracecmd_default_file_version(void);
struct tracecmd_output;
struct tracecmd_recorder;
@@ -9,18 +9,13 @@
#include <byteswap.h>
#include "trace-cmd-private.h"
+#define FILE_VERSION_DEFAULT 6
+
/* Can be overridden */
void tracecmd_warning(const char *fmt, ...);
void tracecmd_critical(const char *fmt, ...);
void tracecmd_info(const char *fmt, ...);
-/* trace.dat file format version */
-#define FILE_VERSION 6
-
-#define _STR(x) #x
-#define STR(x) _STR(x)
-#define FILE_VERSION_STRING STR(FILE_VERSION)
-
#ifndef htonll
# if __BYTE_ORDER == __LITTLE_ENDIAN
#define htonll(x) __bswap_64(x)
@@ -83,6 +83,8 @@ struct list_event_system {
char *name;
};
+#define HAS_SECTIONS(H) ((H)->file_version >= FILE_VERSION_SECTIONS)
+
static stsize_t
do_write_check(struct tracecmd_output *handle, const void *data, tsize_t size)
{
@@ -919,7 +921,7 @@ struct tracecmd_output *tracecmd_output_create_fd(int fd)
handle->fd = fd;
- handle->file_version = FILE_VERSION;
+ handle->file_version = FILE_VERSION_DEFAULT;
handle->page_size = getpagesize();
handle->big_endian = tracecmd_host_bigendian();
@@ -618,9 +618,19 @@ unsigned long long tracecmd_generate_traceid(void)
return hash;
}
+/*
+ * tracecmd_default_file_version - Get default trace file version of the library
+ *
+ * Returns the default trace file version
+ */
+int tracecmd_default_file_version(void)
+{
+ return FILE_VERSION_DEFAULT;
+}
+
bool tracecmd_is_version_supported(unsigned int version)
{
- if (version <= FILE_VERSION)
+ if (version >= FILE_VERSION_MIN && version <= FILE_VERSION_MAX)
return true;
return false;
}
@@ -214,6 +214,7 @@ struct common_record_context {
int topt;
int run_command;
int saved_cmdlines_size;
+ int file_version;
};
static void add_reset_file(const char *file, const char *val, int prio)
@@ -5972,6 +5973,7 @@ static void init_common_record_context(struct common_record_context *ctx,
ctx->instance = &top_instance;
ctx->curr_cmd = curr_cmd;
local_cpu_count = tracecmd_count_cpus();
+ ctx->file_version = tracecmd_default_file_version();
init_top_instance();
}
Added a define for file version 7, but keep the default file version to 6. Defined the new file version as the first version that supports trace file sections. A new trace-cmd library API is introduced, to get the default trace file version if the library: tracecmd_default_file_version() Signed-off-by: Tzvetomir Stoyanov (VMware) <tz.stoyanov@gmail.com> --- lib/trace-cmd/include/private/trace-cmd-private.h | 6 ++++++ lib/trace-cmd/include/trace-cmd-local.h | 9 ++------- lib/trace-cmd/trace-output.c | 4 +++- lib/trace-cmd/trace-util.c | 12 +++++++++++- tracecmd/trace-record.c | 2 ++ 5 files changed, 24 insertions(+), 9 deletions(-)