@@ -281,6 +281,7 @@ int tracecmd_output_set_msg(struct tracecmd_output *handler,
int tracecmd_output_set_trace_dir(struct tracecmd_output *handler, const char *tracing_dir);
int tracecmd_output_set_kallsyms(struct tracecmd_output *handler, const char *kallsyms);
int tracecmd_output_set_from_input(struct tracecmd_output *handler, struct tracecmd_input *ihandle);
+int tracecmd_output_set_version(struct tracecmd_output *handler, int file_version);
int tracecmd_output_write_init(struct tracecmd_output *handler);
int tracecmd_output_write_headers(struct tracecmd_output *handler,
struct tracecmd_event_list *list);
@@ -315,6 +316,7 @@ int tracecmd_append_cpu_data(struct tracecmd_output *handle,
int tracecmd_append_buffer_cpu_data(struct tracecmd_output *handle,
const char *name, int cpus, char * const *cpu_data_files);
struct tracecmd_output *tracecmd_get_output_handle_fd(int fd);
+unsigned long tracecmd_get_out_file_version(struct tracecmd_output *handle);
/* --- Reading the Fly Recorder Trace --- */
@@ -1055,6 +1055,26 @@ int tracecmd_output_set_from_input(struct tracecmd_output *handler, struct trace
return 0;
}
+/**
+ * tracecmd_output_set_version - Set file version of the output handler
+ * @handle: output handler to a trace file.
+ * @file_version: desired file version
+ *
+ * This API must be called before tracecmd_output_write_init().
+ *
+ * Returns 0 on success, or -1 if the output file handler is not allocated or not in expected state.
+ */
+int tracecmd_output_set_version(struct tracecmd_output *handler, int file_version)
+{
+ if (!handler || handler->file_state != TRACECMD_FILE_ALLOCATED)
+ return -1;
+ if (file_version < FILE_VERSION_MIN || file_version > FILE_VERSION_MAX)
+ return -1;
+ handler->file_version = file_version;
+ return 0;
+}
+
+
/**
* tracecmd_output_write_init - Write the initial magics in the trace file
* @handle: output handler to a trace file.
@@ -1885,3 +1905,12 @@ __hidden bool check_out_state(struct tracecmd_output *handle, int new_state)
{
return check_file_state(handle->file_version, handle->file_state, new_state);
}
+
+/**
+ * tracecmd_get_out_file_version - return the trace.dat file version
+ * @handle: output handle for the trace.dat file
+ */
+unsigned long tracecmd_get_out_file_version(struct tracecmd_output *handle)
+{
+ return handle->file_version;
+}
There are cases where the version of the file, associated with given output handler must be get or set. Added new APIs for such use cases: tracecmd_get_out_file_version() tracecmd_output_set_version() Signed-off-by: Tzvetomir Stoyanov (VMware) <tz.stoyanov@gmail.com> --- .../include/private/trace-cmd-private.h | 2 ++ lib/trace-cmd/trace-output.c | 29 +++++++++++++++++++ 2 files changed, 31 insertions(+)