@@ -239,6 +239,7 @@ tracecmd_get_cursor(struct tracecmd_input *handle, int cpu);
unsigned long tracecmd_get_in_file_version(struct tracecmd_input *handle);
int tracecmd_get_file_compress_proto(struct tracecmd_input *handle,
const char **name, const char **version);
+size_t tracecmd_get_options_offset(struct tracecmd_input *handle);
int tracecmd_ftrace_overrides(struct tracecmd_input *handle, struct tracecmd_ftrace *finfo);
bool tracecmd_get_use_trace_clock(struct tracecmd_input *handle);
@@ -157,6 +157,7 @@ struct tracecmd_input {
size_t header_files_start;
size_t ftrace_files_start;
size_t event_files_start;
+ size_t options_start;
size_t total_file_size;
/* For custom profilers. */
@@ -2759,6 +2760,7 @@ static int handle_options(struct tracecmd_input *handle)
/* By default, use usecs, unless told otherwise */
handle->flags |= TRACECMD_FL_IN_USECS;
+ handle->options_start = lseek64(handle->fd, 0, SEEK_CUR);
for (;;) {
if (do_read_check(handle, &option, 2))
@@ -4213,6 +4215,15 @@ bool tracecmd_get_use_trace_clock(struct tracecmd_input *handle)
return handle->use_trace_clock;
}
+/**
+ * tracecmd_get_options_offset - get offset of the options sections in the file
+ * @handle: input handle for the trace.dat file
+ */
+size_t tracecmd_get_options_offset(struct tracecmd_input *handle)
+{
+ return handle->options_start;
+}
+
/**
* tracecmd_get_show_data_func - return the show data func
* @handle: input handle for the trace.dat file
@@ -66,6 +66,7 @@ struct tracecmd_output {
bool quiet;
unsigned long file_state;
unsigned long file_version;
+ size_t options_start;
bool do_compress;
struct tracecmd_compression *compress;
@@ -1858,6 +1859,7 @@ struct tracecmd_output *tracecmd_get_output_handle_fd(int fd)
tep_ref(handle->pevent);
handle->page_size = tracecmd_page_size(ihandle);
handle->file_version = tracecmd_get_in_file_version(ihandle);
+ handle->options_start = tracecmd_get_options_offset(ihandle);
list_head_init(&handle->options);
list_head_init(&handle->buffers);
When reading / writing trace file, store the offset of the option section in the file. A new internal API is added, to get the offset of the option section from an input file handler: tracecmd_get_options_offset() These changes are needed for compression of the option section from the trace file. Signed-off-by: Tzvetomir Stoyanov (VMware) <tz.stoyanov@gmail.com> --- lib/trace-cmd/include/private/trace-cmd-private.h | 1 + lib/trace-cmd/trace-input.c | 11 +++++++++++ lib/trace-cmd/trace-output.c | 2 ++ 3 files changed, 14 insertions(+)