diff options
Diffstat (limited to 'tools/perf/util/header.c')
-rw-r--r-- | tools/perf/util/header.c | 69 |
1 files changed, 33 insertions, 36 deletions
diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c index 1cd035708931..bb3e0ede6183 100644 --- a/tools/perf/util/header.c +++ b/tools/perf/util/header.c | |||
@@ -177,7 +177,7 @@ perf_header__set_cmdline(int argc, const char **argv) | |||
177 | continue; \ | 177 | continue; \ |
178 | else | 178 | else |
179 | 179 | ||
180 | static int write_buildid(char *name, size_t name_len, u8 *build_id, | 180 | static int write_buildid(const char *name, size_t name_len, u8 *build_id, |
181 | pid_t pid, u16 misc, int fd) | 181 | pid_t pid, u16 misc, int fd) |
182 | { | 182 | { |
183 | int err; | 183 | int err; |
@@ -209,7 +209,7 @@ static int __dsos__write_buildid_table(struct list_head *head, | |||
209 | 209 | ||
210 | dsos__for_each_with_build_id(pos, head) { | 210 | dsos__for_each_with_build_id(pos, head) { |
211 | int err; | 211 | int err; |
212 | char *name; | 212 | const char *name; |
213 | size_t name_len; | 213 | size_t name_len; |
214 | 214 | ||
215 | if (!pos->hit) | 215 | if (!pos->hit) |
@@ -387,7 +387,7 @@ static int dso__cache_build_id(struct dso *dso, struct machine *machine, | |||
387 | { | 387 | { |
388 | bool is_kallsyms = dso->kernel && dso->long_name[0] != '/'; | 388 | bool is_kallsyms = dso->kernel && dso->long_name[0] != '/'; |
389 | bool is_vdso = is_vdso_map(dso->short_name); | 389 | bool is_vdso = is_vdso_map(dso->short_name); |
390 | char *name = dso->long_name; | 390 | const char *name = dso->long_name; |
391 | char nm[PATH_MAX]; | 391 | char nm[PATH_MAX]; |
392 | 392 | ||
393 | if (dso__is_kcore(dso)) { | 393 | if (dso__is_kcore(dso)) { |
@@ -643,8 +643,7 @@ static int write_event_desc(int fd, struct perf_header *h __maybe_unused, | |||
643 | if (ret < 0) | 643 | if (ret < 0) |
644 | return ret; | 644 | return ret; |
645 | 645 | ||
646 | list_for_each_entry(evsel, &evlist->entries, node) { | 646 | evlist__for_each(evlist, evsel) { |
647 | |||
648 | ret = do_write(fd, &evsel->attr, sz); | 647 | ret = do_write(fd, &evsel->attr, sz); |
649 | if (ret < 0) | 648 | if (ret < 0) |
650 | return ret; | 649 | return ret; |
@@ -800,10 +799,10 @@ static void free_cpu_topo(struct cpu_topo *tp) | |||
800 | return; | 799 | return; |
801 | 800 | ||
802 | for (i = 0 ; i < tp->core_sib; i++) | 801 | for (i = 0 ; i < tp->core_sib; i++) |
803 | free(tp->core_siblings[i]); | 802 | zfree(&tp->core_siblings[i]); |
804 | 803 | ||
805 | for (i = 0 ; i < tp->thread_sib; i++) | 804 | for (i = 0 ; i < tp->thread_sib; i++) |
806 | free(tp->thread_siblings[i]); | 805 | zfree(&tp->thread_siblings[i]); |
807 | 806 | ||
808 | free(tp); | 807 | free(tp); |
809 | } | 808 | } |
@@ -1092,7 +1091,7 @@ static int write_group_desc(int fd, struct perf_header *h __maybe_unused, | |||
1092 | if (ret < 0) | 1091 | if (ret < 0) |
1093 | return ret; | 1092 | return ret; |
1094 | 1093 | ||
1095 | list_for_each_entry(evsel, &evlist->entries, node) { | 1094 | evlist__for_each(evlist, evsel) { |
1096 | if (perf_evsel__is_group_leader(evsel) && | 1095 | if (perf_evsel__is_group_leader(evsel) && |
1097 | evsel->nr_members > 1) { | 1096 | evsel->nr_members > 1) { |
1098 | const char *name = evsel->group_name ?: "{anon_group}"; | 1097 | const char *name = evsel->group_name ?: "{anon_group}"; |
@@ -1232,10 +1231,8 @@ static void free_event_desc(struct perf_evsel *events) | |||
1232 | return; | 1231 | return; |
1233 | 1232 | ||
1234 | for (evsel = events; evsel->attr.size; evsel++) { | 1233 | for (evsel = events; evsel->attr.size; evsel++) { |
1235 | if (evsel->name) | 1234 | zfree(&evsel->name); |
1236 | free(evsel->name); | 1235 | zfree(&evsel->id); |
1237 | if (evsel->id) | ||
1238 | free(evsel->id); | ||
1239 | } | 1236 | } |
1240 | 1237 | ||
1241 | free(events); | 1238 | free(events); |
@@ -1326,8 +1323,7 @@ read_event_desc(struct perf_header *ph, int fd) | |||
1326 | } | 1323 | } |
1327 | } | 1324 | } |
1328 | out: | 1325 | out: |
1329 | if (buf) | 1326 | free(buf); |
1330 | free(buf); | ||
1331 | return events; | 1327 | return events; |
1332 | error: | 1328 | error: |
1333 | if (events) | 1329 | if (events) |
@@ -1490,7 +1486,7 @@ static void print_group_desc(struct perf_header *ph, int fd __maybe_unused, | |||
1490 | 1486 | ||
1491 | session = container_of(ph, struct perf_session, header); | 1487 | session = container_of(ph, struct perf_session, header); |
1492 | 1488 | ||
1493 | list_for_each_entry(evsel, &session->evlist->entries, node) { | 1489 | evlist__for_each(session->evlist, evsel) { |
1494 | if (perf_evsel__is_group_leader(evsel) && | 1490 | if (perf_evsel__is_group_leader(evsel) && |
1495 | evsel->nr_members > 1) { | 1491 | evsel->nr_members > 1) { |
1496 | fprintf(fp, "# group: %s{%s", evsel->group_name ?: "", | 1492 | fprintf(fp, "# group: %s{%s", evsel->group_name ?: "", |
@@ -1709,7 +1705,7 @@ static int process_nrcpus(struct perf_file_section *section __maybe_unused, | |||
1709 | struct perf_header *ph, int fd, | 1705 | struct perf_header *ph, int fd, |
1710 | void *data __maybe_unused) | 1706 | void *data __maybe_unused) |
1711 | { | 1707 | { |
1712 | size_t ret; | 1708 | ssize_t ret; |
1713 | u32 nr; | 1709 | u32 nr; |
1714 | 1710 | ||
1715 | ret = readn(fd, &nr, sizeof(nr)); | 1711 | ret = readn(fd, &nr, sizeof(nr)); |
@@ -1753,7 +1749,7 @@ static int process_total_mem(struct perf_file_section *section __maybe_unused, | |||
1753 | void *data __maybe_unused) | 1749 | void *data __maybe_unused) |
1754 | { | 1750 | { |
1755 | uint64_t mem; | 1751 | uint64_t mem; |
1756 | size_t ret; | 1752 | ssize_t ret; |
1757 | 1753 | ||
1758 | ret = readn(fd, &mem, sizeof(mem)); | 1754 | ret = readn(fd, &mem, sizeof(mem)); |
1759 | if (ret != sizeof(mem)) | 1755 | if (ret != sizeof(mem)) |
@@ -1771,7 +1767,7 @@ perf_evlist__find_by_index(struct perf_evlist *evlist, int idx) | |||
1771 | { | 1767 | { |
1772 | struct perf_evsel *evsel; | 1768 | struct perf_evsel *evsel; |
1773 | 1769 | ||
1774 | list_for_each_entry(evsel, &evlist->entries, node) { | 1770 | evlist__for_each(evlist, evsel) { |
1775 | if (evsel->idx == idx) | 1771 | if (evsel->idx == idx) |
1776 | return evsel; | 1772 | return evsel; |
1777 | } | 1773 | } |
@@ -1822,7 +1818,7 @@ static int process_cmdline(struct perf_file_section *section __maybe_unused, | |||
1822 | struct perf_header *ph, int fd, | 1818 | struct perf_header *ph, int fd, |
1823 | void *data __maybe_unused) | 1819 | void *data __maybe_unused) |
1824 | { | 1820 | { |
1825 | size_t ret; | 1821 | ssize_t ret; |
1826 | char *str; | 1822 | char *str; |
1827 | u32 nr, i; | 1823 | u32 nr, i; |
1828 | struct strbuf sb; | 1824 | struct strbuf sb; |
@@ -1858,7 +1854,7 @@ static int process_cpu_topology(struct perf_file_section *section __maybe_unused | |||
1858 | struct perf_header *ph, int fd, | 1854 | struct perf_header *ph, int fd, |
1859 | void *data __maybe_unused) | 1855 | void *data __maybe_unused) |
1860 | { | 1856 | { |
1861 | size_t ret; | 1857 | ssize_t ret; |
1862 | u32 nr, i; | 1858 | u32 nr, i; |
1863 | char *str; | 1859 | char *str; |
1864 | struct strbuf sb; | 1860 | struct strbuf sb; |
@@ -1914,7 +1910,7 @@ static int process_numa_topology(struct perf_file_section *section __maybe_unuse | |||
1914 | struct perf_header *ph, int fd, | 1910 | struct perf_header *ph, int fd, |
1915 | void *data __maybe_unused) | 1911 | void *data __maybe_unused) |
1916 | { | 1912 | { |
1917 | size_t ret; | 1913 | ssize_t ret; |
1918 | u32 nr, node, i; | 1914 | u32 nr, node, i; |
1919 | char *str; | 1915 | char *str; |
1920 | uint64_t mem_total, mem_free; | 1916 | uint64_t mem_total, mem_free; |
@@ -1974,7 +1970,7 @@ static int process_pmu_mappings(struct perf_file_section *section __maybe_unused | |||
1974 | struct perf_header *ph, int fd, | 1970 | struct perf_header *ph, int fd, |
1975 | void *data __maybe_unused) | 1971 | void *data __maybe_unused) |
1976 | { | 1972 | { |
1977 | size_t ret; | 1973 | ssize_t ret; |
1978 | char *name; | 1974 | char *name; |
1979 | u32 pmu_num; | 1975 | u32 pmu_num; |
1980 | u32 type; | 1976 | u32 type; |
@@ -2074,7 +2070,7 @@ static int process_group_desc(struct perf_file_section *section __maybe_unused, | |||
2074 | session->evlist->nr_groups = nr_groups; | 2070 | session->evlist->nr_groups = nr_groups; |
2075 | 2071 | ||
2076 | i = nr = 0; | 2072 | i = nr = 0; |
2077 | list_for_each_entry(evsel, &session->evlist->entries, node) { | 2073 | evlist__for_each(session->evlist, evsel) { |
2078 | if (evsel->idx == (int) desc[i].leader_idx) { | 2074 | if (evsel->idx == (int) desc[i].leader_idx) { |
2079 | evsel->leader = evsel; | 2075 | evsel->leader = evsel; |
2080 | /* {anon_group} is a dummy name */ | 2076 | /* {anon_group} is a dummy name */ |
@@ -2108,7 +2104,7 @@ static int process_group_desc(struct perf_file_section *section __maybe_unused, | |||
2108 | ret = 0; | 2104 | ret = 0; |
2109 | out_free: | 2105 | out_free: |
2110 | for (i = 0; i < nr_groups; i++) | 2106 | for (i = 0; i < nr_groups; i++) |
2111 | free(desc[i].name); | 2107 | zfree(&desc[i].name); |
2112 | free(desc); | 2108 | free(desc); |
2113 | 2109 | ||
2114 | return ret; | 2110 | return ret; |
@@ -2301,7 +2297,7 @@ int perf_session__write_header(struct perf_session *session, | |||
2301 | 2297 | ||
2302 | lseek(fd, sizeof(f_header), SEEK_SET); | 2298 | lseek(fd, sizeof(f_header), SEEK_SET); |
2303 | 2299 | ||
2304 | list_for_each_entry(evsel, &evlist->entries, node) { | 2300 | evlist__for_each(session->evlist, evsel) { |
2305 | evsel->id_offset = lseek(fd, 0, SEEK_CUR); | 2301 | evsel->id_offset = lseek(fd, 0, SEEK_CUR); |
2306 | err = do_write(fd, evsel->id, evsel->ids * sizeof(u64)); | 2302 | err = do_write(fd, evsel->id, evsel->ids * sizeof(u64)); |
2307 | if (err < 0) { | 2303 | if (err < 0) { |
@@ -2312,7 +2308,7 @@ int perf_session__write_header(struct perf_session *session, | |||
2312 | 2308 | ||
2313 | attr_offset = lseek(fd, 0, SEEK_CUR); | 2309 | attr_offset = lseek(fd, 0, SEEK_CUR); |
2314 | 2310 | ||
2315 | list_for_each_entry(evsel, &evlist->entries, node) { | 2311 | evlist__for_each(evlist, evsel) { |
2316 | f_attr = (struct perf_file_attr){ | 2312 | f_attr = (struct perf_file_attr){ |
2317 | .attr = evsel->attr, | 2313 | .attr = evsel->attr, |
2318 | .ids = { | 2314 | .ids = { |
@@ -2327,7 +2323,8 @@ int perf_session__write_header(struct perf_session *session, | |||
2327 | } | 2323 | } |
2328 | } | 2324 | } |
2329 | 2325 | ||
2330 | header->data_offset = lseek(fd, 0, SEEK_CUR); | 2326 | if (!header->data_offset) |
2327 | header->data_offset = lseek(fd, 0, SEEK_CUR); | ||
2331 | header->feat_offset = header->data_offset + header->data_size; | 2328 | header->feat_offset = header->data_offset + header->data_size; |
2332 | 2329 | ||
2333 | if (at_exit) { | 2330 | if (at_exit) { |
@@ -2534,7 +2531,7 @@ static int check_magic_endian(u64 magic, uint64_t hdr_sz, | |||
2534 | int perf_file_header__read(struct perf_file_header *header, | 2531 | int perf_file_header__read(struct perf_file_header *header, |
2535 | struct perf_header *ph, int fd) | 2532 | struct perf_header *ph, int fd) |
2536 | { | 2533 | { |
2537 | int ret; | 2534 | ssize_t ret; |
2538 | 2535 | ||
2539 | lseek(fd, 0, SEEK_SET); | 2536 | lseek(fd, 0, SEEK_SET); |
2540 | 2537 | ||
@@ -2628,7 +2625,7 @@ static int perf_file_header__read_pipe(struct perf_pipe_file_header *header, | |||
2628 | struct perf_header *ph, int fd, | 2625 | struct perf_header *ph, int fd, |
2629 | bool repipe) | 2626 | bool repipe) |
2630 | { | 2627 | { |
2631 | int ret; | 2628 | ssize_t ret; |
2632 | 2629 | ||
2633 | ret = readn(fd, header, sizeof(*header)); | 2630 | ret = readn(fd, header, sizeof(*header)); |
2634 | if (ret <= 0) | 2631 | if (ret <= 0) |
@@ -2669,7 +2666,7 @@ static int read_attr(int fd, struct perf_header *ph, | |||
2669 | struct perf_event_attr *attr = &f_attr->attr; | 2666 | struct perf_event_attr *attr = &f_attr->attr; |
2670 | size_t sz, left; | 2667 | size_t sz, left; |
2671 | size_t our_sz = sizeof(f_attr->attr); | 2668 | size_t our_sz = sizeof(f_attr->attr); |
2672 | int ret; | 2669 | ssize_t ret; |
2673 | 2670 | ||
2674 | memset(f_attr, 0, sizeof(*f_attr)); | 2671 | memset(f_attr, 0, sizeof(*f_attr)); |
2675 | 2672 | ||
@@ -2744,7 +2741,7 @@ static int perf_evlist__prepare_tracepoint_events(struct perf_evlist *evlist, | |||
2744 | { | 2741 | { |
2745 | struct perf_evsel *pos; | 2742 | struct perf_evsel *pos; |
2746 | 2743 | ||
2747 | list_for_each_entry(pos, &evlist->entries, node) { | 2744 | evlist__for_each(evlist, pos) { |
2748 | if (pos->attr.type == PERF_TYPE_TRACEPOINT && | 2745 | if (pos->attr.type == PERF_TYPE_TRACEPOINT && |
2749 | perf_evsel__prepare_tracepoint_event(pos, pevent)) | 2746 | perf_evsel__prepare_tracepoint_event(pos, pevent)) |
2750 | return -1; | 2747 | return -1; |
@@ -2834,11 +2831,11 @@ int perf_session__read_header(struct perf_session *session) | |||
2834 | 2831 | ||
2835 | symbol_conf.nr_events = nr_attrs; | 2832 | symbol_conf.nr_events = nr_attrs; |
2836 | 2833 | ||
2837 | perf_header__process_sections(header, fd, &session->pevent, | 2834 | perf_header__process_sections(header, fd, &session->tevent, |
2838 | perf_file_section__process); | 2835 | perf_file_section__process); |
2839 | 2836 | ||
2840 | if (perf_evlist__prepare_tracepoint_events(session->evlist, | 2837 | if (perf_evlist__prepare_tracepoint_events(session->evlist, |
2841 | session->pevent)) | 2838 | session->tevent.pevent)) |
2842 | goto out_delete_evlist; | 2839 | goto out_delete_evlist; |
2843 | 2840 | ||
2844 | return 0; | 2841 | return 0; |
@@ -2892,7 +2889,7 @@ int perf_event__synthesize_attrs(struct perf_tool *tool, | |||
2892 | struct perf_evsel *evsel; | 2889 | struct perf_evsel *evsel; |
2893 | int err = 0; | 2890 | int err = 0; |
2894 | 2891 | ||
2895 | list_for_each_entry(evsel, &session->evlist->entries, node) { | 2892 | evlist__for_each(session->evlist, evsel) { |
2896 | err = perf_event__synthesize_attr(tool, &evsel->attr, evsel->ids, | 2893 | err = perf_event__synthesize_attr(tool, &evsel->attr, evsel->ids, |
2897 | evsel->id, process); | 2894 | evsel->id, process); |
2898 | if (err) { | 2895 | if (err) { |
@@ -3003,7 +3000,7 @@ int perf_event__process_tracing_data(struct perf_tool *tool __maybe_unused, | |||
3003 | lseek(fd, offset + sizeof(struct tracing_data_event), | 3000 | lseek(fd, offset + sizeof(struct tracing_data_event), |
3004 | SEEK_SET); | 3001 | SEEK_SET); |
3005 | 3002 | ||
3006 | size_read = trace_report(fd, &session->pevent, | 3003 | size_read = trace_report(fd, &session->tevent, |
3007 | session->repipe); | 3004 | session->repipe); |
3008 | padding = PERF_ALIGN(size_read, sizeof(u64)) - size_read; | 3005 | padding = PERF_ALIGN(size_read, sizeof(u64)) - size_read; |
3009 | 3006 | ||
@@ -3025,7 +3022,7 @@ int perf_event__process_tracing_data(struct perf_tool *tool __maybe_unused, | |||
3025 | } | 3022 | } |
3026 | 3023 | ||
3027 | perf_evlist__prepare_tracepoint_events(session->evlist, | 3024 | perf_evlist__prepare_tracepoint_events(session->evlist, |
3028 | session->pevent); | 3025 | session->tevent.pevent); |
3029 | 3026 | ||
3030 | return size_read + padding; | 3027 | return size_read + padding; |
3031 | } | 3028 | } |