aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/util/header.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/perf/util/header.c')
-rw-r--r--tools/perf/util/header.c17
1 files changed, 3 insertions, 14 deletions
diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c
index 326068a593a5..a4dafbee2511 100644
--- a/tools/perf/util/header.c
+++ b/tools/perf/util/header.c
@@ -2303,29 +2303,18 @@ int perf_session__write_header(struct perf_session *session,
2303 struct perf_file_header f_header; 2303 struct perf_file_header f_header;
2304 struct perf_file_attr f_attr; 2304 struct perf_file_attr f_attr;
2305 struct perf_header *header = &session->header; 2305 struct perf_header *header = &session->header;
2306 struct perf_evsel *evsel, *pair = NULL; 2306 struct perf_evsel *evsel;
2307 int err; 2307 int err;
2308 2308
2309 lseek(fd, sizeof(f_header), SEEK_SET); 2309 lseek(fd, sizeof(f_header), SEEK_SET);
2310 2310
2311 if (session->evlist != evlist)
2312 pair = perf_evlist__first(session->evlist);
2313
2314 list_for_each_entry(evsel, &evlist->entries, node) { 2311 list_for_each_entry(evsel, &evlist->entries, node) {
2315 evsel->id_offset = lseek(fd, 0, SEEK_CUR); 2312 evsel->id_offset = lseek(fd, 0, SEEK_CUR);
2316 err = do_write(fd, evsel->id, evsel->ids * sizeof(u64)); 2313 err = do_write(fd, evsel->id, evsel->ids * sizeof(u64));
2317 if (err < 0) { 2314 if (err < 0) {
2318out_err_write:
2319 pr_debug("failed to write perf header\n"); 2315 pr_debug("failed to write perf header\n");
2320 return err; 2316 return err;
2321 } 2317 }
2322 if (session->evlist != evlist) {
2323 err = do_write(fd, pair->id, pair->ids * sizeof(u64));
2324 if (err < 0)
2325 goto out_err_write;
2326 evsel->ids += pair->ids;
2327 pair = perf_evsel__next(pair);
2328 }
2329 } 2318 }
2330 2319
2331 header->attr_offset = lseek(fd, 0, SEEK_CUR); 2320 header->attr_offset = lseek(fd, 0, SEEK_CUR);
@@ -2391,7 +2380,6 @@ out_err_write:
2391 } 2380 }
2392 lseek(fd, header->data_offset + header->data_size, SEEK_SET); 2381 lseek(fd, header->data_offset + header->data_size, SEEK_SET);
2393 2382
2394 header->frozen = 1;
2395 return 0; 2383 return 0;
2396} 2384}
2397 2385
@@ -2871,7 +2859,6 @@ int perf_session__read_header(struct perf_session *session, int fd)
2871 session->pevent)) 2859 session->pevent))
2872 goto out_delete_evlist; 2860 goto out_delete_evlist;
2873 2861
2874 header->frozen = 1;
2875 return 0; 2862 return 0;
2876out_errno: 2863out_errno:
2877 return -errno; 2864 return -errno;
@@ -2969,6 +2956,8 @@ int perf_event__process_attr(union perf_event *event,
2969 perf_evlist__id_add(evlist, evsel, 0, i, event->attr.id[i]); 2956 perf_evlist__id_add(evlist, evsel, 0, i, event->attr.id[i]);
2970 } 2957 }
2971 2958
2959 symbol_conf.nr_events = evlist->nr_entries;
2960
2972 return 0; 2961 return 0;
2973} 2962}
2974 2963