diff options
author | Sage Weil <sage@inktank.com> | 2013-08-15 14:11:45 -0400 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2013-08-15 14:11:45 -0400 |
commit | ee3e542fec6e69bc9fb668698889a37d93950ddf (patch) | |
tree | e74ee766a4764769ef1d3d45d266b4dea64101d3 /tools/perf/util/header.c | |
parent | fe2a801b50c0bb8039d627e5ae1fec249d10ff39 (diff) | |
parent | f1d6e17f540af37bb1891480143669ba7636c4cf (diff) |
Merge remote-tracking branch 'linus/master' into testing
Diffstat (limited to 'tools/perf/util/header.c')
-rw-r--r-- | tools/perf/util/header.c | 17 |
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) { |
2318 | out_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; |
2876 | out_errno: | 2863 | out_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 | ||