diff options
author | Jiri Olsa <jolsa@redhat.com> | 2013-07-17 13:49:44 -0400 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2013-07-17 15:46:32 -0400 |
commit | 8d541e974f4b3ed5db7e278b4d64481af34910a9 (patch) | |
tree | 03dc055b056c8b57aa875a17dbf91705c11f1463 /tools | |
parent | 944d62ba4c8e1c9bb2962a70e3d495106fae8cd9 (diff) |
perf header: Introduce feat_offset into perf_header
Introducing feat_offset into perf_header to make the location of the
features section clear.
Signed-off-by: Jiri Olsa <jolsa@redhat.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1374083403-14591-5-git-send-email-jolsa@redhat.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/perf/util/header.c | 6 | ||||
-rw-r--r-- | tools/perf/util/header.h | 1 |
2 files changed, 5 insertions, 2 deletions
diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c index dcba56aac1b7..eefb052190f3 100644 --- a/tools/perf/util/header.c +++ b/tools/perf/util/header.c | |||
@@ -2225,7 +2225,7 @@ static int perf_header__adds_write(struct perf_header *header, | |||
2225 | 2225 | ||
2226 | sec_size = sizeof(*feat_sec) * nr_sections; | 2226 | sec_size = sizeof(*feat_sec) * nr_sections; |
2227 | 2227 | ||
2228 | sec_start = header->data_offset + header->data_size; | 2228 | sec_start = header->feat_offset; |
2229 | lseek(fd, sec_start + sec_size, SEEK_SET); | 2229 | lseek(fd, sec_start + sec_size, SEEK_SET); |
2230 | 2230 | ||
2231 | for_each_set_bit(feat, header->adds_features, HEADER_FEAT_BITS) { | 2231 | for_each_set_bit(feat, header->adds_features, HEADER_FEAT_BITS) { |
@@ -2304,6 +2304,7 @@ int perf_session__write_header(struct perf_session *session, | |||
2304 | } | 2304 | } |
2305 | 2305 | ||
2306 | header->data_offset = lseek(fd, 0, SEEK_CUR); | 2306 | header->data_offset = lseek(fd, 0, SEEK_CUR); |
2307 | header->feat_offset = header->data_offset + header->data_size; | ||
2307 | 2308 | ||
2308 | if (at_exit) { | 2309 | if (at_exit) { |
2309 | err = perf_header__adds_write(header, evlist, fd); | 2310 | err = perf_header__adds_write(header, evlist, fd); |
@@ -2373,7 +2374,7 @@ int perf_header__process_sections(struct perf_header *header, int fd, | |||
2373 | 2374 | ||
2374 | sec_size = sizeof(*feat_sec) * nr_sections; | 2375 | sec_size = sizeof(*feat_sec) * nr_sections; |
2375 | 2376 | ||
2376 | lseek(fd, header->data_offset + header->data_size, SEEK_SET); | 2377 | lseek(fd, header->feat_offset, SEEK_SET); |
2377 | 2378 | ||
2378 | err = perf_header__getbuffer64(header, fd, feat_sec, sec_size); | 2379 | err = perf_header__getbuffer64(header, fd, feat_sec, sec_size); |
2379 | if (err < 0) | 2380 | if (err < 0) |
@@ -2572,6 +2573,7 @@ int perf_file_header__read(struct perf_file_header *header, | |||
2572 | 2573 | ||
2573 | ph->data_offset = header->data.offset; | 2574 | ph->data_offset = header->data.offset; |
2574 | ph->data_size = header->data.size; | 2575 | ph->data_size = header->data.size; |
2576 | ph->feat_offset = header->data.offset + header->data.size; | ||
2575 | return 0; | 2577 | return 0; |
2576 | } | 2578 | } |
2577 | 2579 | ||
diff --git a/tools/perf/util/header.h b/tools/perf/util/header.h index 6fa80f947f71..e6387dcb95c0 100644 --- a/tools/perf/util/header.h +++ b/tools/perf/util/header.h | |||
@@ -88,6 +88,7 @@ struct perf_header { | |||
88 | bool needs_swap; | 88 | bool needs_swap; |
89 | u64 data_offset; | 89 | u64 data_offset; |
90 | u64 data_size; | 90 | u64 data_size; |
91 | u64 feat_offset; | ||
91 | DECLARE_BITMAP(adds_features, HEADER_FEAT_BITS); | 92 | DECLARE_BITMAP(adds_features, HEADER_FEAT_BITS); |
92 | struct perf_session_env env; | 93 | struct perf_session_env env; |
93 | }; | 94 | }; |