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.c13
1 files changed, 1 insertions, 12 deletions
diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c
index 738d3b8d9745..93dd31573fb5 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);