aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorJiri Olsa <jolsa@redhat.com>2013-07-17 13:49:44 -0400
committerArnaldo Carvalho de Melo <acme@redhat.com>2013-07-17 15:46:32 -0400
commit8d541e974f4b3ed5db7e278b4d64481af34910a9 (patch)
tree03dc055b056c8b57aa875a17dbf91705c11f1463 /tools
parent944d62ba4c8e1c9bb2962a70e3d495106fae8cd9 (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.c6
-rw-r--r--tools/perf/util/header.h1
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};