diff options
Diffstat (limited to 'tools/perf/util/header.c')
-rw-r--r-- | tools/perf/util/header.c | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c index a5e2015319ee..5a47aba46759 100644 --- a/tools/perf/util/header.c +++ b/tools/perf/util/header.c | |||
@@ -1474,15 +1474,15 @@ out: | |||
1474 | 1474 | ||
1475 | static int process_tracing_data(struct perf_file_section *section __unused, | 1475 | static int process_tracing_data(struct perf_file_section *section __unused, |
1476 | struct perf_header *ph __unused, | 1476 | struct perf_header *ph __unused, |
1477 | int feat __unused, int fd) | 1477 | int feat __unused, int fd, void *data) |
1478 | { | 1478 | { |
1479 | trace_report(fd, false); | 1479 | trace_report(fd, data, false); |
1480 | return 0; | 1480 | return 0; |
1481 | } | 1481 | } |
1482 | 1482 | ||
1483 | static int process_build_id(struct perf_file_section *section, | 1483 | static int process_build_id(struct perf_file_section *section, |
1484 | struct perf_header *ph, | 1484 | struct perf_header *ph, |
1485 | int feat __unused, int fd) | 1485 | int feat __unused, int fd, void *data __used) |
1486 | { | 1486 | { |
1487 | if (perf_header__read_build_ids(ph, fd, section->offset, section->size)) | 1487 | if (perf_header__read_build_ids(ph, fd, section->offset, section->size)) |
1488 | pr_debug("Failed to read buildids, continuing...\n"); | 1488 | pr_debug("Failed to read buildids, continuing...\n"); |
@@ -1493,7 +1493,7 @@ struct feature_ops { | |||
1493 | int (*write)(int fd, struct perf_header *h, struct perf_evlist *evlist); | 1493 | int (*write)(int fd, struct perf_header *h, struct perf_evlist *evlist); |
1494 | void (*print)(struct perf_header *h, int fd, FILE *fp); | 1494 | void (*print)(struct perf_header *h, int fd, FILE *fp); |
1495 | int (*process)(struct perf_file_section *section, | 1495 | int (*process)(struct perf_file_section *section, |
1496 | struct perf_header *h, int feat, int fd); | 1496 | struct perf_header *h, int feat, int fd, void *data); |
1497 | const char *name; | 1497 | const char *name; |
1498 | bool full_only; | 1498 | bool full_only; |
1499 | }; | 1499 | }; |
@@ -1988,7 +1988,7 @@ int perf_file_header__read(struct perf_file_header *header, | |||
1988 | 1988 | ||
1989 | static int perf_file_section__process(struct perf_file_section *section, | 1989 | static int perf_file_section__process(struct perf_file_section *section, |
1990 | struct perf_header *ph, | 1990 | struct perf_header *ph, |
1991 | int feat, int fd, void *data __used) | 1991 | int feat, int fd, void *data) |
1992 | { | 1992 | { |
1993 | if (lseek(fd, section->offset, SEEK_SET) == (off_t)-1) { | 1993 | if (lseek(fd, section->offset, SEEK_SET) == (off_t)-1) { |
1994 | pr_debug("Failed to lseek to %" PRIu64 " offset for feature " | 1994 | pr_debug("Failed to lseek to %" PRIu64 " offset for feature " |
@@ -2004,7 +2004,7 @@ static int perf_file_section__process(struct perf_file_section *section, | |||
2004 | if (!feat_ops[feat].process) | 2004 | if (!feat_ops[feat].process) |
2005 | return 0; | 2005 | return 0; |
2006 | 2006 | ||
2007 | return feat_ops[feat].process(section, ph, feat, fd); | 2007 | return feat_ops[feat].process(section, ph, feat, fd, data); |
2008 | } | 2008 | } |
2009 | 2009 | ||
2010 | static int perf_file_header__read_pipe(struct perf_pipe_file_header *header, | 2010 | static int perf_file_header__read_pipe(struct perf_pipe_file_header *header, |
@@ -2093,9 +2093,11 @@ static int read_attr(int fd, struct perf_header *ph, | |||
2093 | return ret <= 0 ? -1 : 0; | 2093 | return ret <= 0 ? -1 : 0; |
2094 | } | 2094 | } |
2095 | 2095 | ||
2096 | static int perf_evsel__set_tracepoint_name(struct perf_evsel *evsel) | 2096 | static int perf_evsel__set_tracepoint_name(struct perf_evsel *evsel, |
2097 | struct pevent *pevent) | ||
2097 | { | 2098 | { |
2098 | struct event_format *event = trace_find_event(evsel->attr.config); | 2099 | struct event_format *event = pevent_find_event(pevent, |
2100 | evsel->attr.config); | ||
2099 | char bf[128]; | 2101 | char bf[128]; |
2100 | 2102 | ||
2101 | if (event == NULL) | 2103 | if (event == NULL) |
@@ -2109,13 +2111,14 @@ static int perf_evsel__set_tracepoint_name(struct perf_evsel *evsel) | |||
2109 | return 0; | 2111 | return 0; |
2110 | } | 2112 | } |
2111 | 2113 | ||
2112 | static int perf_evlist__set_tracepoint_names(struct perf_evlist *evlist) | 2114 | static int perf_evlist__set_tracepoint_names(struct perf_evlist *evlist, |
2115 | struct pevent *pevent) | ||
2113 | { | 2116 | { |
2114 | struct perf_evsel *pos; | 2117 | struct perf_evsel *pos; |
2115 | 2118 | ||
2116 | list_for_each_entry(pos, &evlist->entries, node) { | 2119 | list_for_each_entry(pos, &evlist->entries, node) { |
2117 | if (pos->attr.type == PERF_TYPE_TRACEPOINT && | 2120 | if (pos->attr.type == PERF_TYPE_TRACEPOINT && |
2118 | perf_evsel__set_tracepoint_name(pos)) | 2121 | perf_evsel__set_tracepoint_name(pos, pevent)) |
2119 | return -1; | 2122 | return -1; |
2120 | } | 2123 | } |
2121 | 2124 | ||
@@ -2198,12 +2201,12 @@ int perf_session__read_header(struct perf_session *session, int fd) | |||
2198 | event_count = f_header.event_types.size / sizeof(struct perf_trace_event_type); | 2201 | event_count = f_header.event_types.size / sizeof(struct perf_trace_event_type); |
2199 | } | 2202 | } |
2200 | 2203 | ||
2201 | perf_header__process_sections(header, fd, NULL, | 2204 | perf_header__process_sections(header, fd, &session->pevent, |
2202 | perf_file_section__process); | 2205 | perf_file_section__process); |
2203 | 2206 | ||
2204 | lseek(fd, header->data_offset, SEEK_SET); | 2207 | lseek(fd, header->data_offset, SEEK_SET); |
2205 | 2208 | ||
2206 | if (perf_evlist__set_tracepoint_names(session->evlist)) | 2209 | if (perf_evlist__set_tracepoint_names(session->evlist, session->pevent)) |
2207 | goto out_delete_evlist; | 2210 | goto out_delete_evlist; |
2208 | 2211 | ||
2209 | header->frozen = 1; | 2212 | header->frozen = 1; |
@@ -2419,8 +2422,8 @@ int perf_event__process_tracing_data(union perf_event *event, | |||
2419 | lseek(session->fd, offset + sizeof(struct tracing_data_event), | 2422 | lseek(session->fd, offset + sizeof(struct tracing_data_event), |
2420 | SEEK_SET); | 2423 | SEEK_SET); |
2421 | 2424 | ||
2422 | size_read = trace_report(session->fd, session->repipe); | 2425 | size_read = trace_report(session->fd, &session->pevent, |
2423 | 2426 | session->repipe); | |
2424 | padding = ALIGN(size_read, sizeof(u64)) - size_read; | 2427 | padding = ALIGN(size_read, sizeof(u64)) - size_read; |
2425 | 2428 | ||
2426 | if (read(session->fd, buf, padding) < 0) | 2429 | if (read(session->fd, buf, padding) < 0) |