Lines Matching full:ff
91 static int __do_write_fd(struct feat_fd *ff, const void *buf, size_t size) in __do_write_fd() argument
93 ssize_t ret = writen(ff->fd, buf, size); in __do_write_fd()
100 static int __do_write_buf(struct feat_fd *ff, const void *buf, size_t size) in __do_write_buf() argument
104 size_t new_size = ff->size; in __do_write_buf()
107 if (size + ff->offset > max_size) in __do_write_buf()
110 while (size > (new_size - ff->offset)) in __do_write_buf()
114 if (ff->size < new_size) { in __do_write_buf()
115 addr = realloc(ff->buf, new_size); in __do_write_buf()
118 ff->buf = addr; in __do_write_buf()
119 ff->size = new_size; in __do_write_buf()
122 memcpy(ff->buf + ff->offset, buf, size); in __do_write_buf()
123 ff->offset += size; in __do_write_buf()
129 int do_write(struct feat_fd *ff, const void *buf, size_t size) in do_write() argument
131 if (!ff->buf) in do_write()
132 return __do_write_fd(ff, buf, size); in do_write()
133 return __do_write_buf(ff, buf, size); in do_write()
137 static int do_write_bitmap(struct feat_fd *ff, unsigned long *set, u64 size) in do_write_bitmap() argument
142 ret = do_write(ff, &size, sizeof(size)); in do_write_bitmap()
147 ret = do_write(ff, p + i, sizeof(*p)); in do_write_bitmap()
156 int write_padded(struct feat_fd *ff, const void *bf, in write_padded() argument
160 int err = do_write(ff, bf, count); in write_padded()
163 err = do_write(ff, zero_buf, count_aligned - count); in write_padded()
172 static int do_write_string(struct feat_fd *ff, const char *str) in do_write_string() argument
181 ret = do_write(ff, &len, sizeof(len)); in do_write_string()
185 return write_padded(ff, str, olen, len); in do_write_string()
188 static int __do_read_fd(struct feat_fd *ff, void *addr, ssize_t size) in __do_read_fd() argument
190 ssize_t ret = readn(ff->fd, addr, size); in __do_read_fd()
197 static int __do_read_buf(struct feat_fd *ff, void *addr, ssize_t size) in __do_read_buf() argument
199 if (size > (ssize_t)ff->size - ff->offset) in __do_read_buf()
202 memcpy(addr, ff->buf + ff->offset, size); in __do_read_buf()
203 ff->offset += size; in __do_read_buf()
209 static int __do_read(struct feat_fd *ff, void *addr, ssize_t size) in __do_read() argument
211 if (!ff->buf) in __do_read()
212 return __do_read_fd(ff, addr, size); in __do_read()
213 return __do_read_buf(ff, addr, size); in __do_read()
216 static int do_read_u32(struct feat_fd *ff, u32 *addr) in do_read_u32() argument
220 ret = __do_read(ff, addr, sizeof(*addr)); in do_read_u32()
224 if (ff->ph->needs_swap) in do_read_u32()
229 static int do_read_u64(struct feat_fd *ff, u64 *addr) in do_read_u64() argument
233 ret = __do_read(ff, addr, sizeof(*addr)); in do_read_u64()
237 if (ff->ph->needs_swap) in do_read_u64()
242 static char *do_read_string(struct feat_fd *ff) in do_read_string() argument
247 if (do_read_u32(ff, &len)) in do_read_string()
254 if (!__do_read(ff, buf, len)) { in do_read_string()
268 static int do_read_bitmap(struct feat_fd *ff, unsigned long **pset, u64 *psize) in do_read_bitmap() argument
274 ret = do_read_u64(ff, &size); in do_read_bitmap()
285 ret = do_read_u64(ff, p + i); in do_read_bitmap()
297 static int write_tracing_data(struct feat_fd *ff, in write_tracing_data() argument
300 if (WARN(ff->buf, "Error: calling %s in pipe-mode.\n", __func__)) in write_tracing_data()
303 return read_tracing_data(ff->fd, &evlist->core.entries); in write_tracing_data()
306 static int write_build_id(struct feat_fd *ff, in write_build_id() argument
312 session = container_of(ff->ph, struct perf_session, header); in write_build_id()
317 if (WARN(ff->buf, "Error: calling %s in pipe-mode.\n", __func__)) in write_build_id()
320 err = perf_session__write_buildid_table(session, ff); in write_build_id()
330 static int write_hostname(struct feat_fd *ff, in write_hostname() argument
340 return do_write_string(ff, uts.nodename); in write_hostname()
343 static int write_osrelease(struct feat_fd *ff, in write_osrelease() argument
353 return do_write_string(ff, uts.release); in write_osrelease()
356 static int write_arch(struct feat_fd *ff, in write_arch() argument
366 return do_write_string(ff, uts.machine); in write_arch()
369 static int write_version(struct feat_fd *ff, in write_version() argument
372 return do_write_string(ff, perf_version_string); in write_version()
375 static int __write_cpudesc(struct feat_fd *ff, const char *cpuinfo_proc) in __write_cpudesc() argument
423 ret = do_write_string(ff, s); in __write_cpudesc()
430 static int write_cpudesc(struct feat_fd *ff, in write_cpudesc() argument
456 ret = __write_cpudesc(ff, cpuinfo_procs[i]); in write_cpudesc()
464 static int write_nrcpus(struct feat_fd *ff, in write_nrcpus() argument
479 ret = do_write(ff, &nrc, sizeof(nrc)); in write_nrcpus()
483 return do_write(ff, &nra, sizeof(nra)); in write_nrcpus()
486 static int write_event_desc(struct feat_fd *ff, in write_event_desc() argument
498 ret = do_write(ff, &nre, sizeof(nre)); in write_event_desc()
506 ret = do_write(ff, &sz, sizeof(sz)); in write_event_desc()
511 ret = do_write(ff, &evsel->core.attr, sz); in write_event_desc()
522 ret = do_write(ff, &nri, sizeof(nri)); in write_event_desc()
529 ret = do_write_string(ff, evsel__name(evsel)); in write_event_desc()
535 ret = do_write(ff, evsel->core.id, evsel->core.ids * sizeof(u64)); in write_event_desc()
542 static int write_cmdline(struct feat_fd *ff, in write_cmdline() argument
554 ret = do_write(ff, &n, sizeof(n)); in write_cmdline()
558 ret = do_write_string(ff, buf); in write_cmdline()
563 ret = do_write_string(ff, perf_env.cmdline_argv[i]); in write_cmdline()
571 static int write_cpu_topology(struct feat_fd *ff, in write_cpu_topology() argument
582 ret = do_write(ff, &tp->core_sib, sizeof(tp->core_sib)); in write_cpu_topology()
587 ret = do_write_string(ff, tp->core_siblings[i]); in write_cpu_topology()
591 ret = do_write(ff, &tp->thread_sib, sizeof(tp->thread_sib)); in write_cpu_topology()
596 ret = do_write_string(ff, tp->thread_siblings[i]); in write_cpu_topology()
606 ret = do_write(ff, &perf_env.cpu[j].core_id, in write_cpu_topology()
610 ret = do_write(ff, &perf_env.cpu[j].socket_id, in write_cpu_topology()
619 ret = do_write(ff, &tp->die_sib, sizeof(tp->die_sib)); in write_cpu_topology()
624 ret = do_write_string(ff, tp->die_siblings[i]); in write_cpu_topology()
630 ret = do_write(ff, &perf_env.cpu[j].die_id, in write_cpu_topology()
643 static int write_total_mem(struct feat_fd *ff, in write_total_mem() argument
664 ret = do_write(ff, &mem, sizeof(mem)); in write_total_mem()
672 static int write_numa_topology(struct feat_fd *ff, in write_numa_topology() argument
683 ret = do_write(ff, &tp->nr, sizeof(u32)); in write_numa_topology()
690 ret = do_write(ff, &n->node, sizeof(u32)); in write_numa_topology()
694 ret = do_write(ff, &n->mem_total, sizeof(u64)); in write_numa_topology()
698 ret = do_write(ff, &n->mem_free, sizeof(u64)); in write_numa_topology()
702 ret = do_write_string(ff, n->cpus); in write_numa_topology()
726 static int write_pmu_mappings(struct feat_fd *ff, in write_pmu_mappings() argument
743 ret = do_write(ff, &pmu_num, sizeof(pmu_num)); in write_pmu_mappings()
751 ret = do_write(ff, &pmu->type, sizeof(pmu->type)); in write_pmu_mappings()
755 ret = do_write_string(ff, pmu->name); in write_pmu_mappings()
775 static int write_group_desc(struct feat_fd *ff, in write_group_desc() argument
782 ret = do_write(ff, &nr_groups, sizeof(nr_groups)); in write_group_desc()
792 ret = do_write_string(ff, name); in write_group_desc()
796 ret = do_write(ff, &leader_idx, sizeof(leader_idx)); in write_group_desc()
800 ret = do_write(ff, &nr_members, sizeof(nr_members)); in write_group_desc()
856 static int write_cpuid(struct feat_fd *ff, in write_cpuid() argument
866 return do_write_string(ff, buffer); in write_cpuid()
869 static int write_branch_stack(struct feat_fd *ff __maybe_unused, in write_branch_stack()
875 static int write_auxtrace(struct feat_fd *ff, in write_auxtrace() argument
881 if (WARN(ff->buf, "Error: calling %s in pipe-mode.\n", __func__)) in write_auxtrace()
884 session = container_of(ff->ph, struct perf_session, header); in write_auxtrace()
886 err = auxtrace_index__write(ff->fd, &session->auxtrace_index); in write_auxtrace()
892 static int write_clockid(struct feat_fd *ff, in write_clockid() argument
895 return do_write(ff, &ff->ph->env.clock.clockid_res_ns, in write_clockid()
896 sizeof(ff->ph->env.clock.clockid_res_ns)); in write_clockid()
899 static int write_clock_data(struct feat_fd *ff, in write_clock_data() argument
909 ret = do_write(ff, &data32, sizeof(data32)); in write_clock_data()
914 data32 = ff->ph->env.clock.clockid; in write_clock_data()
916 ret = do_write(ff, &data32, sizeof(data32)); in write_clock_data()
921 data64 = &ff->ph->env.clock.tod_ns; in write_clock_data()
923 ret = do_write(ff, data64, sizeof(*data64)); in write_clock_data()
928 data64 = &ff->ph->env.clock.clockid_ns; in write_clock_data()
930 return do_write(ff, data64, sizeof(*data64)); in write_clock_data()
933 static int write_dir_format(struct feat_fd *ff, in write_dir_format() argument
939 session = container_of(ff->ph, struct perf_session, header); in write_dir_format()
945 return do_write(ff, &data->dir.version, sizeof(data->dir.version)); in write_dir_format()
949 static int write_bpf_prog_info(struct feat_fd *ff, in write_bpf_prog_info() argument
952 struct perf_env *env = &ff->ph->env; in write_bpf_prog_info()
959 ret = do_write(ff, &env->bpf_progs.infos_cnt, in write_bpf_prog_info()
977 ret = do_write(ff, node->info_linear, len); in write_bpf_prog_info()
991 static int write_bpf_prog_info(struct feat_fd *ff __maybe_unused, in write_bpf_prog_info()
998 static int write_bpf_btf(struct feat_fd *ff, in write_bpf_btf() argument
1001 struct perf_env *env = &ff->ph->env; in write_bpf_btf()
1008 ret = do_write(ff, &env->bpf_progs.btfs_cnt, in write_bpf_btf()
1021 ret = do_write(ff, &node->id, in write_bpf_btf()
1163 static int write_cache(struct feat_fd *ff, in write_cache() argument
1177 ret = do_write(ff, &version, sizeof(u32)); in write_cache()
1181 ret = do_write(ff, &cnt, sizeof(u32)); in write_cache()
1189 ret = do_write(ff, &c->v, sizeof(u32)); \ in write_cache()
1200 ret = do_write_string(ff, (const char *) c->v); \ in write_cache()
1216 static int write_stat(struct feat_fd *ff __maybe_unused, in write_stat()
1222 static int write_sample_time(struct feat_fd *ff, in write_sample_time() argument
1227 ret = do_write(ff, &evlist->first_sample_time, in write_sample_time()
1232 return do_write(ff, &evlist->last_sample_time, in write_sample_time()
1358 static int write_mem_topology(struct feat_fd *ff __maybe_unused, in write_mem_topology()
1374 ret = do_write(ff, &version, sizeof(version)); in write_mem_topology()
1378 ret = do_write(ff, &bsize, sizeof(bsize)); in write_mem_topology()
1382 ret = do_write(ff, &nr, sizeof(nr)); in write_mem_topology()
1390 ret = do_write(ff, &n->v, sizeof(n->v)); \ in write_mem_topology()
1399 ret = do_write_bitmap(ff, n->set, n->size); in write_mem_topology()
1408 static int write_compressed(struct feat_fd *ff __maybe_unused, in write_compressed()
1413 ret = do_write(ff, &(ff->ph->env.comp_ver), sizeof(ff->ph->env.comp_ver)); in write_compressed()
1417 ret = do_write(ff, &(ff->ph->env.comp_type), sizeof(ff->ph->env.comp_type)); in write_compressed()
1421 ret = do_write(ff, &(ff->ph->env.comp_level), sizeof(ff->ph->env.comp_level)); in write_compressed()
1425 ret = do_write(ff, &(ff->ph->env.comp_ratio), sizeof(ff->ph->env.comp_ratio)); in write_compressed()
1429 return do_write(ff, &(ff->ph->env.comp_mmap_len), sizeof(ff->ph->env.comp_mmap_len)); in write_compressed()
1432 static int write_cpu_pmu_caps(struct feat_fd *ff, in write_cpu_pmu_caps() argument
1447 ret = do_write(ff, &nr_caps, sizeof(nr_caps)); in write_cpu_pmu_caps()
1452 ret = do_write_string(ff, caps->name); in write_cpu_pmu_caps()
1456 ret = do_write_string(ff, caps->value); in write_cpu_pmu_caps()
1464 static void print_hostname(struct feat_fd *ff, FILE *fp) in print_hostname() argument
1466 fprintf(fp, "# hostname : %s\n", ff->ph->env.hostname); in print_hostname()
1469 static void print_osrelease(struct feat_fd *ff, FILE *fp) in print_osrelease() argument
1471 fprintf(fp, "# os release : %s\n", ff->ph->env.os_release); in print_osrelease()
1474 static void print_arch(struct feat_fd *ff, FILE *fp) in print_arch() argument
1476 fprintf(fp, "# arch : %s\n", ff->ph->env.arch); in print_arch()
1479 static void print_cpudesc(struct feat_fd *ff, FILE *fp) in print_cpudesc() argument
1481 fprintf(fp, "# cpudesc : %s\n", ff->ph->env.cpu_desc); in print_cpudesc()
1484 static void print_nrcpus(struct feat_fd *ff, FILE *fp) in print_nrcpus() argument
1486 fprintf(fp, "# nrcpus online : %u\n", ff->ph->env.nr_cpus_online); in print_nrcpus()
1487 fprintf(fp, "# nrcpus avail : %u\n", ff->ph->env.nr_cpus_avail); in print_nrcpus()
1490 static void print_version(struct feat_fd *ff, FILE *fp) in print_version() argument
1492 fprintf(fp, "# perf version : %s\n", ff->ph->env.version); in print_version()
1495 static void print_cmdline(struct feat_fd *ff, FILE *fp) in print_cmdline() argument
1499 nr = ff->ph->env.nr_cmdline; in print_cmdline()
1504 char *argv_i = strdup(ff->ph->env.cmdline_argv[i]); in print_cmdline()
1506 fprintf(fp, "%s ", ff->ph->env.cmdline_argv[i]); in print_cmdline()
1524 static void print_cpu_topology(struct feat_fd *ff, FILE *fp) in print_cpu_topology() argument
1526 struct perf_header *ph = ff->ph; in print_cpu_topology()
1581 static void print_clockid(struct feat_fd *ff, FILE *fp) in print_clockid() argument
1584 ff->ph->env.clock.clockid_res_ns * 1000); in print_clockid()
1587 static void print_clock_data(struct feat_fd *ff, FILE *fp) in print_clock_data() argument
1596 if (!ff->ph->env.clock.enabled) { in print_clock_data()
1602 ref = ff->ph->env.clock.tod_ns; in print_clock_data()
1608 ref = ff->ph->env.clock.clockid_ns; in print_clock_data()
1613 clockid = ff->ph->env.clock.clockid; in print_clock_data()
1630 static void print_dir_format(struct feat_fd *ff, FILE *fp) in print_dir_format() argument
1635 session = container_of(ff->ph, struct perf_session, header); in print_dir_format()
1641 static void print_bpf_prog_info(struct feat_fd *ff, FILE *fp) in print_bpf_prog_info() argument
1643 struct perf_env *env = &ff->ph->env; in print_bpf_prog_info()
1665 static void print_bpf_btf(struct feat_fd *ff, FILE *fp) in print_bpf_btf() argument
1667 struct perf_env *env = &ff->ph->env; in print_bpf_btf()
1736 static struct evsel *read_event_desc(struct feat_fd *ff) in read_event_desc() argument
1745 if (do_read_u32(ff, &nre)) in read_event_desc()
1748 if (do_read_u32(ff, &sz)) in read_event_desc()
1772 if (__do_read(ff, buf, sz)) in read_event_desc()
1775 if (ff->ph->needs_swap) in read_event_desc()
1783 if (do_read_u32(ff, &nr)) in read_event_desc()
1786 if (ff->ph->needs_swap) in read_event_desc()
1789 evsel->name = do_read_string(ff); in read_event_desc()
1803 if (do_read_u64(ff, id)) in read_event_desc()
1823 static void print_event_desc(struct feat_fd *ff, FILE *fp) in print_event_desc() argument
1829 if (ff->events) in print_event_desc()
1830 events = ff->events; in print_event_desc()
1832 events = read_event_desc(ff); in print_event_desc()
1858 ff->events = NULL; in print_event_desc()
1861 static void print_total_mem(struct feat_fd *ff, FILE *fp) in print_total_mem() argument
1863 fprintf(fp, "# total memory : %llu kB\n", ff->ph->env.total_mem); in print_total_mem()
1866 static void print_numa_topology(struct feat_fd *ff, FILE *fp) in print_numa_topology() argument
1871 for (i = 0; i < ff->ph->env.nr_numa_nodes; i++) { in print_numa_topology()
1872 n = &ff->ph->env.numa_nodes[i]; in print_numa_topology()
1883 static void print_cpuid(struct feat_fd *ff, FILE *fp) in print_cpuid() argument
1885 fprintf(fp, "# cpuid : %s\n", ff->ph->env.cpuid); in print_cpuid()
1888 static void print_branch_stack(struct feat_fd *ff __maybe_unused, FILE *fp) in print_branch_stack()
1893 static void print_auxtrace(struct feat_fd *ff __maybe_unused, FILE *fp) in print_auxtrace()
1898 static void print_stat(struct feat_fd *ff __maybe_unused, FILE *fp) in print_stat()
1903 static void print_cache(struct feat_fd *ff, FILE *fp __maybe_unused) in print_cache() argument
1908 for (i = 0; i < ff->ph->env.caches_cnt; i++) { in print_cache()
1910 cpu_cache_level__fprintf(fp, &ff->ph->env.caches[i]); in print_cache()
1914 static void print_compressed(struct feat_fd *ff, FILE *fp) in print_compressed() argument
1917 ff->ph->env.comp_type == PERF_COMP_ZSTD ? "Zstd" : "Unknown", in print_compressed()
1918 ff->ph->env.comp_level, ff->ph->env.comp_ratio); in print_compressed()
1921 static void print_cpu_pmu_caps(struct feat_fd *ff, FILE *fp) in print_cpu_pmu_caps() argument
1924 u32 nr_caps = ff->ph->env.nr_cpu_pmu_caps; in print_cpu_pmu_caps()
1932 str = ff->ph->env.cpu_pmu_caps; in print_cpu_pmu_caps()
1942 static void print_pmu_mappings(struct feat_fd *ff, FILE *fp) in print_pmu_mappings() argument
1949 pmu_num = ff->ph->env.nr_pmu_mappings; in print_pmu_mappings()
1955 str = ff->ph->env.pmu_mappings; in print_pmu_mappings()
1978 static void print_group_desc(struct feat_fd *ff, FILE *fp) in print_group_desc() argument
1984 session = container_of(ff->ph, struct perf_session, header); in print_group_desc()
2000 static void print_sample_time(struct feat_fd *ff, FILE *fp) in print_sample_time() argument
2006 session = container_of(ff->ph, struct perf_session, header); in print_sample_time()
2035 static void print_mem_topology(struct feat_fd *ff, FILE *fp) in print_mem_topology() argument
2040 nodes = ff->ph->env.memory_nodes; in print_mem_topology()
2041 nr = ff->ph->env.nr_memory_nodes; in print_mem_topology()
2044 nr, ff->ph->env.memory_bsize); in print_mem_topology()
2047 memory_node__fprintf(&nodes[i], ff->ph->env.memory_bsize, fp); in print_mem_topology()
2212 static int process_##__feat(struct feat_fd *ff, void *data __maybe_unused) \
2214 ff->ph->env.__feat_env = do_read_string(ff); \
2215 return ff->ph->env.__feat_env ? 0 : -ENOMEM; \
2225 static int process_tracing_data(struct feat_fd *ff, void *data) in process_tracing_data() argument
2227 ssize_t ret = trace_report(ff->fd, data, false); in process_tracing_data()
2232 static int process_build_id(struct feat_fd *ff, void *data __maybe_unused) in process_build_id() argument
2234 if (perf_header__read_build_ids(ff->ph, ff->fd, ff->offset, ff->size)) in process_build_id()
2239 static int process_nrcpus(struct feat_fd *ff, void *data __maybe_unused) in process_nrcpus() argument
2244 ret = do_read_u32(ff, &nr_cpus_avail); in process_nrcpus()
2248 ret = do_read_u32(ff, &nr_cpus_online); in process_nrcpus()
2251 ff->ph->env.nr_cpus_avail = (int)nr_cpus_avail; in process_nrcpus()
2252 ff->ph->env.nr_cpus_online = (int)nr_cpus_online; in process_nrcpus()
2256 static int process_total_mem(struct feat_fd *ff, void *data __maybe_unused) in process_total_mem() argument
2261 ret = do_read_u64(ff, &total_mem); in process_total_mem()
2264 ff->ph->env.total_mem = (unsigned long long)total_mem; in process_total_mem()
2301 process_event_desc(struct feat_fd *ff, void *data __maybe_unused) in process_event_desc() argument
2304 struct evsel *evsel, *events = read_event_desc(ff); in process_event_desc()
2309 session = container_of(ff->ph, struct perf_session, header); in process_event_desc()
2314 ff->events = events; in process_event_desc()
2326 static int process_cmdline(struct feat_fd *ff, void *data __maybe_unused) in process_cmdline() argument
2331 if (do_read_u32(ff, &nr)) in process_cmdline()
2334 ff->ph->env.nr_cmdline = nr; in process_cmdline()
2336 cmdline = zalloc(ff->size + nr + 1); in process_cmdline()
2345 str = do_read_string(ff); in process_cmdline()
2354 ff->ph->env.cmdline = cmdline; in process_cmdline()
2355 ff->ph->env.cmdline_argv = (const char **) argv; in process_cmdline()
2364 static int process_cpu_topology(struct feat_fd *ff, void *data __maybe_unused) in process_cpu_topology() argument
2369 int cpu_nr = ff->ph->env.nr_cpus_avail; in process_cpu_topology()
2371 struct perf_header *ph = ff->ph; in process_cpu_topology()
2378 if (do_read_u32(ff, &nr)) in process_cpu_topology()
2387 str = do_read_string(ff); in process_cpu_topology()
2399 if (do_read_u32(ff, &nr)) in process_cpu_topology()
2406 str = do_read_string(ff); in process_cpu_topology()
2422 if (ff->size <= size) { in process_cpu_topology()
2437 if (do_read_u32(ff, &nr)) in process_cpu_topology()
2443 if (do_read_u32(ff, &nr)) in process_cpu_topology()
2460 if (ff->size <= size) in process_cpu_topology()
2463 if (do_read_u32(ff, &nr)) in process_cpu_topology()
2470 str = do_read_string(ff); in process_cpu_topology()
2483 if (do_read_u32(ff, &nr)) in process_cpu_topology()
2498 static int process_numa_topology(struct feat_fd *ff, void *data __maybe_unused) in process_numa_topology() argument
2505 if (do_read_u32(ff, &nr)) in process_numa_topology()
2516 if (do_read_u32(ff, &n->node)) in process_numa_topology()
2519 if (do_read_u64(ff, &n->mem_total)) in process_numa_topology()
2522 if (do_read_u64(ff, &n->mem_free)) in process_numa_topology()
2525 str = do_read_string(ff); in process_numa_topology()
2535 ff->ph->env.nr_numa_nodes = nr; in process_numa_topology()
2536 ff->ph->env.numa_nodes = nodes; in process_numa_topology()
2544 static int process_pmu_mappings(struct feat_fd *ff, void *data __maybe_unused) in process_pmu_mappings() argument
2551 if (do_read_u32(ff, &pmu_num)) in process_pmu_mappings()
2559 ff->ph->env.nr_pmu_mappings = pmu_num; in process_pmu_mappings()
2564 if (do_read_u32(ff, &type)) in process_pmu_mappings()
2567 name = do_read_string(ff); in process_pmu_mappings()
2578 ff->ph->env.msr_pmu_type = type; in process_pmu_mappings()
2583 ff->ph->env.pmu_mappings = strbuf_detach(&sb, NULL); in process_pmu_mappings()
2591 static int process_group_desc(struct feat_fd *ff, void *data __maybe_unused) in process_group_desc() argument
2603 if (do_read_u32(ff, &nr_groups)) in process_group_desc()
2606 ff->ph->env.nr_groups = nr_groups; in process_group_desc()
2617 desc[i].name = do_read_string(ff); in process_group_desc()
2621 if (do_read_u32(ff, &desc[i].leader_idx)) in process_group_desc()
2624 if (do_read_u32(ff, &desc[i].nr_members)) in process_group_desc()
2631 session = container_of(ff->ph, struct perf_session, header); in process_group_desc()
2675 static int process_auxtrace(struct feat_fd *ff, void *data __maybe_unused) in process_auxtrace() argument
2680 session = container_of(ff->ph, struct perf_session, header); in process_auxtrace()
2682 err = auxtrace_index__process(ff->fd, ff->size, session, in process_auxtrace()
2683 ff->ph->needs_swap); in process_auxtrace()
2689 static int process_cache(struct feat_fd *ff, void *data __maybe_unused) in process_cache() argument
2694 if (do_read_u32(ff, &version)) in process_cache()
2700 if (do_read_u32(ff, &cnt)) in process_cache()
2711 if (do_read_u32(ff, &c.v))\ in process_cache()
2721 c.v = do_read_string(ff); \ in process_cache()
2733 ff->ph->env.caches = caches; in process_cache()
2734 ff->ph->env.caches_cnt = cnt; in process_cache()
2741 static int process_sample_time(struct feat_fd *ff, void *data __maybe_unused) in process_sample_time() argument
2747 session = container_of(ff->ph, struct perf_session, header); in process_sample_time()
2749 ret = do_read_u64(ff, &first_sample_time); in process_sample_time()
2753 ret = do_read_u64(ff, &last_sample_time); in process_sample_time()
2762 static int process_mem_topology(struct feat_fd *ff, in process_mem_topology() argument
2769 if (do_read_u64(ff, &version)) in process_mem_topology()
2775 if (do_read_u64(ff, &bsize)) in process_mem_topology()
2778 if (do_read_u64(ff, &nr)) in process_mem_topology()
2789 if (do_read_u64(ff, &n.v)) \ in process_mem_topology()
2797 if (do_read_bitmap(ff, &n.set, &n.size)) in process_mem_topology()
2803 ff->ph->env.memory_bsize = bsize; in process_mem_topology()
2804 ff->ph->env.memory_nodes = nodes; in process_mem_topology()
2805 ff->ph->env.nr_memory_nodes = nr; in process_mem_topology()
2814 static int process_clockid(struct feat_fd *ff, in process_clockid() argument
2817 if (do_read_u64(ff, &ff->ph->env.clock.clockid_res_ns)) in process_clockid()
2823 static int process_clock_data(struct feat_fd *ff, in process_clock_data() argument
2830 if (do_read_u32(ff, &data32)) in process_clock_data()
2837 if (do_read_u32(ff, &data32)) in process_clock_data()
2840 ff->ph->env.clock.clockid = data32; in process_clock_data()
2843 if (do_read_u64(ff, &data64)) in process_clock_data()
2846 ff->ph->env.clock.tod_ns = data64; in process_clock_data()
2849 if (do_read_u64(ff, &data64)) in process_clock_data()
2852 ff->ph->env.clock.clockid_ns = data64; in process_clock_data()
2853 ff->ph->env.clock.enabled = true; in process_clock_data()
2857 static int process_dir_format(struct feat_fd *ff, in process_dir_format() argument
2863 session = container_of(ff->ph, struct perf_session, header); in process_dir_format()
2869 return do_read_u64(ff, &data->dir.version); in process_dir_format()
2873 static int process_bpf_prog_info(struct feat_fd *ff, void *data __maybe_unused) in process_bpf_prog_info() argument
2877 struct perf_env *env = &ff->ph->env; in process_bpf_prog_info()
2881 if (ff->ph->needs_swap) { in process_bpf_prog_info()
2886 if (do_read_u32(ff, &count)) in process_bpf_prog_info()
2896 if (do_read_u32(ff, &info_len)) in process_bpf_prog_info()
2898 if (do_read_u32(ff, &data_len)) in process_bpf_prog_info()
2912 if (do_read_u64(ff, (u64 *)(&info_linear->arrays))) in process_bpf_prog_info()
2914 if (__do_read(ff, &info_linear->info, info_len)) in process_bpf_prog_info()
2920 if (__do_read(ff, info_linear->data, data_len)) in process_bpf_prog_info()
2942 static int process_bpf_prog_info(struct feat_fd *ff __maybe_unused, void *data __maybe_unused) in process_bpf_prog_info()
2948 static int process_bpf_btf(struct feat_fd *ff, void *data __maybe_unused) in process_bpf_btf() argument
2950 struct perf_env *env = &ff->ph->env; in process_bpf_btf()
2955 if (ff->ph->needs_swap) { in process_bpf_btf()
2960 if (do_read_u32(ff, &count)) in process_bpf_btf()
2968 if (do_read_u32(ff, &id)) in process_bpf_btf()
2970 if (do_read_u32(ff, &data_size)) in process_bpf_btf()
2980 if (__do_read(ff, node->data, data_size)) in process_bpf_btf()
2994 static int process_compressed(struct feat_fd *ff, in process_compressed() argument
2997 if (do_read_u32(ff, &(ff->ph->env.comp_ver))) in process_compressed()
3000 if (do_read_u32(ff, &(ff->ph->env.comp_type))) in process_compressed()
3003 if (do_read_u32(ff, &(ff->ph->env.comp_level))) in process_compressed()
3006 if (do_read_u32(ff, &(ff->ph->env.comp_ratio))) in process_compressed()
3009 if (do_read_u32(ff, &(ff->ph->env.comp_mmap_len))) in process_compressed()
3015 static int process_cpu_pmu_caps(struct feat_fd *ff, in process_cpu_pmu_caps() argument
3022 if (do_read_u32(ff, &nr_caps)) in process_cpu_pmu_caps()
3030 ff->ph->env.nr_cpu_pmu_caps = nr_caps; in process_cpu_pmu_caps()
3036 name = do_read_string(ff); in process_cpu_pmu_caps()
3040 value = do_read_string(ff); in process_cpu_pmu_caps()
3052 ff->ph->env.max_branches = atoi(value); in process_cpu_pmu_caps()
3057 ff->ph->env.cpu_pmu_caps = strbuf_detach(&sb, NULL); in process_cpu_pmu_caps()
3140 struct feat_fd ff; in perf_file_section__fprintf_info() local
3154 ff = (struct feat_fd) { in perf_file_section__fprintf_info()
3160 feat_ops[feat].print(&ff, hd->fp); in perf_file_section__fprintf_info()
3208 static int do_write_feat(struct feat_fd *ff, int type, in do_write_feat() argument
3215 if (perf_header__has_feat(ff->ph, type)) { in do_write_feat()
3219 if (WARN(ff->buf, "Error: calling %s in pipe-mode.\n", __func__)) in do_write_feat()
3222 (*p)->offset = lseek(ff->fd, 0, SEEK_CUR); in do_write_feat()
3224 err = feat_ops[type].write(ff, evlist); in do_write_feat()
3229 lseek(ff->fd, (*p)->offset, SEEK_SET); in do_write_feat()
3233 (*p)->size = lseek(ff->fd, 0, SEEK_CUR) - (*p)->offset; in do_write_feat()
3243 struct feat_fd ff; in perf_header__adds_write() local
3250 ff = (struct feat_fd){ in perf_header__adds_write()
3269 if (do_write_feat(&ff, feat, &p, evlist)) in perf_header__adds_write()
3278 err = do_write(&ff, feat_sec, sec_size); in perf_header__adds_write()
3288 struct feat_fd ff; in perf_header__write_pipe() local
3291 ff = (struct feat_fd){ .fd = fd }; in perf_header__write_pipe()
3298 err = do_write(&ff, &f_header, sizeof(f_header)); in perf_header__write_pipe()
3315 struct feat_fd ff; in perf_session__write_header() local
3319 ff = (struct feat_fd){ .fd = fd}; in perf_session__write_header()
3324 err = do_write(&ff, evsel->core.id, evsel->core.ids * sizeof(u64)); in perf_session__write_header()
3331 attr_offset = lseek(ff.fd, 0, SEEK_CUR); in perf_session__write_header()
3341 err = do_write(&ff, &f_attr, sizeof(f_attr)); in perf_session__write_header()
3376 err = do_write(&ff, &f_header, sizeof(f_header)); in perf_session__write_header()
3658 struct feat_fd ff = { in perf_file_header__read_pipe() local
3676 if (repipe && do_write(&ff, header, sizeof(*header)) < 0) in perf_file_header__read_pipe()
3909 struct feat_fd ff = { .fd = 0 }; in perf_event__process_feature() local
3926 ff.buf = (void *)fe->data; in perf_event__process_feature()
3927 ff.size = event->header.size - sizeof(*fe); in perf_event__process_feature()
3928 ff.ph = &session->header; in perf_event__process_feature()
3930 if (feat_ops[feat].process(&ff, NULL)) in perf_event__process_feature()
3938 feat_ops[feat].print(&ff, stdout); in perf_event__process_feature()