diff options
author | Adrian Hunter <adrian.hunter@intel.com> | 2014-07-22 09:17:35 -0400 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2014-07-23 10:57:27 -0400 |
commit | 6d363459d7e6e05f0afeb8e36e6de262a4964694 (patch) | |
tree | 01cdc30704115b5332bdd2b6f8f4f7a6ca3111f7 | |
parent | a6a69db4b686e51045771945669bba6578af67c1 (diff) |
perf tools: Add dso__data_size()
Add a function to return the dso data size, for use in estimating the
size an instruction cache.
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@gmail.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/r/1406035081-14301-27-git-send-email-adrian.hunter@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
-rw-r--r-- | tools/perf/util/dso.c | 22 | ||||
-rw-r--r-- | tools/perf/util/dso.h | 2 |
2 files changed, 24 insertions, 0 deletions
diff --git a/tools/perf/util/dso.c b/tools/perf/util/dso.c index 84e4a0546a31..e657d86e82b9 100644 --- a/tools/perf/util/dso.c +++ b/tools/perf/util/dso.c | |||
@@ -544,6 +544,28 @@ static int data_file_size(struct dso *dso) | |||
544 | return 0; | 544 | return 0; |
545 | } | 545 | } |
546 | 546 | ||
547 | /** | ||
548 | * dso__data_size - Return dso data size | ||
549 | * @dso: dso object | ||
550 | * @machine: machine object | ||
551 | * | ||
552 | * Return: dso data size | ||
553 | */ | ||
554 | off_t dso__data_size(struct dso *dso, struct machine *machine) | ||
555 | { | ||
556 | int fd; | ||
557 | |||
558 | fd = dso__data_fd(dso, machine); | ||
559 | if (fd < 0) | ||
560 | return fd; | ||
561 | |||
562 | if (data_file_size(dso)) | ||
563 | return -1; | ||
564 | |||
565 | /* For now just estimate dso data size is close to file size */ | ||
566 | return dso->data.file_size; | ||
567 | } | ||
568 | |||
547 | static ssize_t data_read_offset(struct dso *dso, u64 offset, | 569 | static ssize_t data_read_offset(struct dso *dso, u64 offset, |
548 | u8 *data, ssize_t size) | 570 | u8 *data, ssize_t size) |
549 | { | 571 | { |
diff --git a/tools/perf/util/dso.h b/tools/perf/util/dso.h index c805f604da1f..af1c256aad4f 100644 --- a/tools/perf/util/dso.h +++ b/tools/perf/util/dso.h | |||
@@ -166,6 +166,7 @@ int dso__read_binary_type_filename(const struct dso *dso, enum dso_binary_type t | |||
166 | * The dso__data_* external interface provides following functions: | 166 | * The dso__data_* external interface provides following functions: |
167 | * dso__data_fd | 167 | * dso__data_fd |
168 | * dso__data_close | 168 | * dso__data_close |
169 | * dso__data_size | ||
169 | * dso__data_read_offset | 170 | * dso__data_read_offset |
170 | * dso__data_read_addr | 171 | * dso__data_read_addr |
171 | * | 172 | * |
@@ -203,6 +204,7 @@ int dso__read_binary_type_filename(const struct dso *dso, enum dso_binary_type t | |||
203 | int dso__data_fd(struct dso *dso, struct machine *machine); | 204 | int dso__data_fd(struct dso *dso, struct machine *machine); |
204 | void dso__data_close(struct dso *dso); | 205 | void dso__data_close(struct dso *dso); |
205 | 206 | ||
207 | off_t dso__data_size(struct dso *dso, struct machine *machine); | ||
206 | ssize_t dso__data_read_offset(struct dso *dso, struct machine *machine, | 208 | ssize_t dso__data_read_offset(struct dso *dso, struct machine *machine, |
207 | u64 offset, u8 *data, ssize_t size); | 209 | u64 offset, u8 *data, ssize_t size); |
208 | ssize_t dso__data_read_addr(struct dso *dso, struct map *map, | 210 | ssize_t dso__data_read_addr(struct dso *dso, struct map *map, |