|
@@ -2093,6 +2093,35 @@ static int read_attr(int fd, struct perf_header *ph,
|
|
|
return ret <= 0 ? -1 : 0;
|
|
|
}
|
|
|
|
|
|
+static int perf_evsel__set_tracepoint_name(struct perf_evsel *evsel)
|
|
|
+{
|
|
|
+ struct event_format *event = trace_find_event(evsel->attr.config);
|
|
|
+ char bf[128];
|
|
|
+
|
|
|
+ if (event == NULL)
|
|
|
+ return -1;
|
|
|
+
|
|
|
+ snprintf(bf, sizeof(bf), "%s:%s", event->system, event->name);
|
|
|
+ evsel->name = strdup(bf);
|
|
|
+ if (event->name == NULL)
|
|
|
+ return -1;
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+static int perf_evlist__set_tracepoint_names(struct perf_evlist *evlist)
|
|
|
+{
|
|
|
+ struct perf_evsel *pos;
|
|
|
+
|
|
|
+ list_for_each_entry(pos, &evlist->entries, node) {
|
|
|
+ if (pos->attr.type == PERF_TYPE_TRACEPOINT &&
|
|
|
+ perf_evsel__set_tracepoint_name(pos))
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
int perf_session__read_header(struct perf_session *session, int fd)
|
|
|
{
|
|
|
struct perf_header *header = &session->header;
|
|
@@ -2174,6 +2203,9 @@ int perf_session__read_header(struct perf_session *session, int fd)
|
|
|
|
|
|
lseek(fd, header->data_offset, SEEK_SET);
|
|
|
|
|
|
+ if (perf_evlist__set_tracepoint_names(session->evlist))
|
|
|
+ goto out_delete_evlist;
|
|
|
+
|
|
|
header->frozen = 1;
|
|
|
return 0;
|
|
|
out_errno:
|