diff options
-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, |