diff options
Diffstat (limited to 'tools/perf/util/trace-event-info.c')
-rw-r--r-- | tools/perf/util/trace-event-info.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/tools/perf/util/trace-event-info.c b/tools/perf/util/trace-event-info.c index 5ea8973ad331..b1572601286c 100644 --- a/tools/perf/util/trace-event-info.c +++ b/tools/perf/util/trace-event-info.c | |||
@@ -154,10 +154,17 @@ static void put_tracing_file(char *file) | |||
154 | free(file); | 154 | free(file); |
155 | } | 155 | } |
156 | 156 | ||
157 | static ssize_t calc_data_size; | ||
158 | |||
157 | static ssize_t write_or_die(const void *buf, size_t len) | 159 | static ssize_t write_or_die(const void *buf, size_t len) |
158 | { | 160 | { |
159 | int ret; | 161 | int ret; |
160 | 162 | ||
163 | if (calc_data_size) { | ||
164 | calc_data_size += len; | ||
165 | return len; | ||
166 | } | ||
167 | |||
161 | ret = write(output_fd, buf, len); | 168 | ret = write(output_fd, buf, len); |
162 | if (ret < 0) | 169 | if (ret < 0) |
163 | die("writing to '%s'", output_file); | 170 | die("writing to '%s'", output_file); |
@@ -480,6 +487,17 @@ get_tracepoints_path(struct perf_event_attr *pattrs, int nb_events) | |||
480 | return nr_tracepoints > 0 ? path.next : NULL; | 487 | return nr_tracepoints > 0 ? path.next : NULL; |
481 | } | 488 | } |
482 | 489 | ||
490 | bool have_tracepoints(struct perf_event_attr *pattrs, int nb_events) | ||
491 | { | ||
492 | int i; | ||
493 | |||
494 | for (i = 0; i < nb_events; i++) | ||
495 | if (pattrs[i].type == PERF_TYPE_TRACEPOINT) | ||
496 | return true; | ||
497 | |||
498 | return false; | ||
499 | } | ||
500 | |||
483 | int read_tracing_data(int fd, struct perf_event_attr *pattrs, int nb_events) | 501 | int read_tracing_data(int fd, struct perf_event_attr *pattrs, int nb_events) |
484 | { | 502 | { |
485 | char buf[BUFSIZ]; | 503 | char buf[BUFSIZ]; |
@@ -526,3 +544,20 @@ int read_tracing_data(int fd, struct perf_event_attr *pattrs, int nb_events) | |||
526 | 544 | ||
527 | return 0; | 545 | return 0; |
528 | } | 546 | } |
547 | |||
548 | ssize_t read_tracing_data_size(int fd, struct perf_event_attr *pattrs, | ||
549 | int nb_events) | ||
550 | { | ||
551 | ssize_t size; | ||
552 | int err = 0; | ||
553 | |||
554 | calc_data_size = 1; | ||
555 | err = read_tracing_data(fd, pattrs, nb_events); | ||
556 | size = calc_data_size - 1; | ||
557 | calc_data_size = 0; | ||
558 | |||
559 | if (err < 0) | ||
560 | return err; | ||
561 | |||
562 | return size; | ||
563 | } | ||