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->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
425 ret = do_write_string(ff, s); in __write_cpudesc()
432 static int write_cpudesc(struct feat_fd *ff, in write_cpudesc() argument
440 ret = __write_cpudesc(ff, cpuinfo_procs[i]); in write_cpudesc()
448 static int write_nrcpus(struct feat_fd *ff, in write_nrcpus() argument
463 ret = do_write(ff, &nrc, sizeof(nrc)); in write_nrcpus()
467 return do_write(ff, &nra, sizeof(nra)); in write_nrcpus()
470 static int write_event_desc(struct feat_fd *ff, in write_event_desc() argument
482 ret = do_write(ff, &nre, sizeof(nre)); in write_event_desc()
490 ret = do_write(ff, &sz, sizeof(sz)); in write_event_desc()
495 ret = do_write(ff, &evsel->attr, sz); in write_event_desc()
506 ret = do_write(ff, &nri, sizeof(nri)); in write_event_desc()
513 ret = do_write_string(ff, perf_evsel__name(evsel)); in write_event_desc()
519 ret = do_write(ff, evsel->id, evsel->ids * sizeof(u64)); in write_event_desc()
526 static int write_cmdline(struct feat_fd *ff, in write_cmdline() argument
544 ret = do_write(ff, &n, sizeof(n)); in write_cmdline()
548 ret = do_write_string(ff, buf); in write_cmdline()
553 ret = do_write_string(ff, perf_env.cmdline_argv[i]); in write_cmdline()
706 static int write_cpu_topology(struct feat_fd *ff, in write_cpu_topology() argument
717 ret = do_write(ff, &tp->core_sib, sizeof(tp->core_sib)); in write_cpu_topology()
722 ret = do_write_string(ff, tp->core_siblings[i]); in write_cpu_topology()
726 ret = do_write(ff, &tp->thread_sib, sizeof(tp->thread_sib)); in write_cpu_topology()
731 ret = do_write_string(ff, tp->thread_siblings[i]); in write_cpu_topology()
741 ret = do_write(ff, &perf_env.cpu[j].core_id, in write_cpu_topology()
745 ret = do_write(ff, &perf_env.cpu[j].socket_id, in write_cpu_topology()
757 static int write_total_mem(struct feat_fd *ff, in write_total_mem() argument
778 ret = do_write(ff, &mem, sizeof(mem)); in write_total_mem()
786 static int write_topo_node(struct feat_fd *ff, int node) in write_topo_node() argument
816 ret = do_write(ff, &mem_total, sizeof(u64)); in write_topo_node()
820 ret = do_write(ff, &mem_free, sizeof(u64)); in write_topo_node()
838 ret = do_write_string(ff, buf); in write_topo_node()
846 static int write_numa_topology(struct feat_fd *ff, in write_numa_topology() argument
874 ret = do_write(ff, &nr, sizeof(nr)); in write_numa_topology()
880 ret = do_write(ff, &j, sizeof(j)); in write_numa_topology()
884 ret = write_topo_node(ff, i); in write_numa_topology()
907 static int write_pmu_mappings(struct feat_fd *ff, in write_pmu_mappings() argument
924 ret = do_write(ff, &pmu_num, sizeof(pmu_num)); in write_pmu_mappings()
932 ret = do_write(ff, &pmu->type, sizeof(pmu->type)); in write_pmu_mappings()
936 ret = do_write_string(ff, pmu->name); in write_pmu_mappings()
956 static int write_group_desc(struct feat_fd *ff, in write_group_desc() argument
963 ret = do_write(ff, &nr_groups, sizeof(nr_groups)); in write_group_desc()
974 ret = do_write_string(ff, name); in write_group_desc()
978 ret = do_write(ff, &leader_idx, sizeof(leader_idx)); in write_group_desc()
982 ret = do_write(ff, &nr_members, sizeof(nr_members)); in write_group_desc()
999 static int write_cpuid(struct feat_fd *ff, in write_cpuid() argument
1011 return do_write_string(ff, buffer); in write_cpuid()
1014 static int write_branch_stack(struct feat_fd *ff __maybe_unused, in write_branch_stack()
1020 static int write_auxtrace(struct feat_fd *ff, in write_auxtrace() argument
1026 if (WARN(ff->buf, "Error: calling %s in pipe-mode.\n", __func__)) in write_auxtrace()
1029 session = container_of(ff->ph, struct perf_session, header); in write_auxtrace()
1031 err = auxtrace_index__write(ff->fd, &session->auxtrace_index); in write_auxtrace()
1178 static int write_cache(struct feat_fd *ff, in write_cache() argument
1191 ret = do_write(ff, &version, sizeof(u32)); in write_cache()
1195 ret = do_write(ff, &cnt, sizeof(u32)); in write_cache()
1203 ret = do_write(ff, &c->v, sizeof(u32)); \ in write_cache()
1214 ret = do_write_string(ff, (const char *) c->v); \ in write_cache()
1230 static int write_stat(struct feat_fd *ff __maybe_unused, in write_stat()
1236 static int write_sample_time(struct feat_fd *ff, in write_sample_time() argument
1241 ret = do_write(ff, &evlist->first_sample_time, in write_sample_time()
1246 return do_write(ff, &evlist->last_sample_time, in write_sample_time()
1370 static int write_mem_topology(struct feat_fd *ff __maybe_unused, in write_mem_topology()
1386 ret = do_write(ff, &version, sizeof(version)); in write_mem_topology()
1390 ret = do_write(ff, &bsize, sizeof(bsize)); in write_mem_topology()
1394 ret = do_write(ff, &nr, sizeof(nr)); in write_mem_topology()
1402 ret = do_write(ff, &n->v, sizeof(n->v)); \ in write_mem_topology()
1411 ret = do_write_bitmap(ff, n->set, n->size); in write_mem_topology()
1420 static void print_hostname(struct feat_fd *ff, FILE *fp) in print_hostname() argument
1422 fprintf(fp, "# hostname : %s\n", ff->ph->env.hostname); in print_hostname()
1425 static void print_osrelease(struct feat_fd *ff, FILE *fp) in print_osrelease() argument
1427 fprintf(fp, "# os release : %s\n", ff->ph->env.os_release); in print_osrelease()
1430 static void print_arch(struct feat_fd *ff, FILE *fp) in print_arch() argument
1432 fprintf(fp, "# arch : %s\n", ff->ph->env.arch); in print_arch()
1435 static void print_cpudesc(struct feat_fd *ff, FILE *fp) in print_cpudesc() argument
1437 fprintf(fp, "# cpudesc : %s\n", ff->ph->env.cpu_desc); in print_cpudesc()
1440 static void print_nrcpus(struct feat_fd *ff, FILE *fp) in print_nrcpus() argument
1442 fprintf(fp, "# nrcpus online : %u\n", ff->ph->env.nr_cpus_online); in print_nrcpus()
1443 fprintf(fp, "# nrcpus avail : %u\n", ff->ph->env.nr_cpus_avail); in print_nrcpus()
1446 static void print_version(struct feat_fd *ff, FILE *fp) in print_version() argument
1448 fprintf(fp, "# perf version : %s\n", ff->ph->env.version); in print_version()
1451 static void print_cmdline(struct feat_fd *ff, FILE *fp) in print_cmdline() argument
1455 nr = ff->ph->env.nr_cmdline; in print_cmdline()
1460 char *argv_i = strdup(ff->ph->env.cmdline_argv[i]); in print_cmdline()
1462 fprintf(fp, "%s ", ff->ph->env.cmdline_argv[i]); in print_cmdline()
1480 static void print_cpu_topology(struct feat_fd *ff, FILE *fp) in print_cpu_topology() argument
1482 struct perf_header *ph = ff->ph; in print_cpu_topology()
1526 static struct perf_evsel *read_event_desc(struct feat_fd *ff) in read_event_desc() argument
1535 if (do_read_u32(ff, &nre)) in read_event_desc()
1538 if (do_read_u32(ff, &sz)) in read_event_desc()
1562 if (__do_read(ff, buf, sz)) in read_event_desc()
1565 if (ff->ph->needs_swap) in read_event_desc()
1570 if (do_read_u32(ff, &nr)) in read_event_desc()
1573 if (ff->ph->needs_swap) in read_event_desc()
1576 evsel->name = do_read_string(ff); in read_event_desc()
1590 if (do_read_u64(ff, id)) in read_event_desc()
1610 static void print_event_desc(struct feat_fd *ff, FILE *fp) in print_event_desc() argument
1616 if (ff->events) in print_event_desc()
1617 events = ff->events; in print_event_desc()
1619 events = read_event_desc(ff); in print_event_desc()
1645 ff->events = NULL; in print_event_desc()
1648 static void print_total_mem(struct feat_fd *ff, FILE *fp) in print_total_mem() argument
1650 fprintf(fp, "# total memory : %llu kB\n", ff->ph->env.total_mem); in print_total_mem()
1653 static void print_numa_topology(struct feat_fd *ff, FILE *fp) in print_numa_topology() argument
1658 for (i = 0; i < ff->ph->env.nr_numa_nodes; i++) { in print_numa_topology()
1659 n = &ff->ph->env.numa_nodes[i]; in print_numa_topology()
1670 static void print_cpuid(struct feat_fd *ff, FILE *fp) in print_cpuid() argument
1672 fprintf(fp, "# cpuid : %s\n", ff->ph->env.cpuid); in print_cpuid()
1675 static void print_branch_stack(struct feat_fd *ff __maybe_unused, FILE *fp) in print_branch_stack()
1680 static void print_auxtrace(struct feat_fd *ff __maybe_unused, FILE *fp) in print_auxtrace()
1685 static void print_stat(struct feat_fd *ff __maybe_unused, FILE *fp) in print_stat()
1690 static void print_cache(struct feat_fd *ff, FILE *fp __maybe_unused) in print_cache() argument
1695 for (i = 0; i < ff->ph->env.caches_cnt; i++) { in print_cache()
1697 cpu_cache_level__fprintf(fp, &ff->ph->env.caches[i]); in print_cache()
1701 static void print_pmu_mappings(struct feat_fd *ff, FILE *fp) in print_pmu_mappings() argument
1708 pmu_num = ff->ph->env.nr_pmu_mappings; in print_pmu_mappings()
1714 str = ff->ph->env.pmu_mappings; in print_pmu_mappings()
1737 static void print_group_desc(struct feat_fd *ff, FILE *fp) in print_group_desc() argument
1743 session = container_of(ff->ph, struct perf_session, header); in print_group_desc()
1761 static void print_sample_time(struct feat_fd *ff, FILE *fp) in print_sample_time() argument
1767 session = container_of(ff->ph, struct perf_session, header); in print_sample_time()
1796 static void print_mem_topology(struct feat_fd *ff, FILE *fp) in print_mem_topology() argument
1801 nodes = ff->ph->env.memory_nodes; in print_mem_topology()
1802 nr = ff->ph->env.nr_memory_nodes; in print_mem_topology()
1805 nr, ff->ph->env.memory_bsize); in print_mem_topology()
1808 memory_node__fprintf(&nodes[i], ff->ph->env.memory_bsize, fp); in print_mem_topology()
1969 static int process_##__feat(struct feat_fd *ff, void *data __maybe_unused) \
1971 ff->ph->env.__feat_env = do_read_string(ff); \
1972 return ff->ph->env.__feat_env ? 0 : -ENOMEM; \
1982 static int process_tracing_data(struct feat_fd *ff, void *data) in process_tracing_data() argument
1984 ssize_t ret = trace_report(ff->fd, data, false); in process_tracing_data()
1989 static int process_build_id(struct feat_fd *ff, void *data __maybe_unused) in process_build_id() argument
1991 if (perf_header__read_build_ids(ff->ph, ff->fd, ff->offset, ff->size)) in process_build_id()
1996 static int process_nrcpus(struct feat_fd *ff, void *data __maybe_unused) in process_nrcpus() argument
2001 ret = do_read_u32(ff, &nr_cpus_avail); in process_nrcpus()
2005 ret = do_read_u32(ff, &nr_cpus_online); in process_nrcpus()
2008 ff->ph->env.nr_cpus_avail = (int)nr_cpus_avail; in process_nrcpus()
2009 ff->ph->env.nr_cpus_online = (int)nr_cpus_online; in process_nrcpus()
2013 static int process_total_mem(struct feat_fd *ff, void *data __maybe_unused) in process_total_mem() argument
2018 ret = do_read_u64(ff, &total_mem); in process_total_mem()
2021 ff->ph->env.total_mem = (unsigned long long)total_mem; in process_total_mem()
2058 process_event_desc(struct feat_fd *ff, void *data __maybe_unused) in process_event_desc() argument
2061 struct perf_evsel *evsel, *events = read_event_desc(ff); in process_event_desc()
2066 session = container_of(ff->ph, struct perf_session, header); in process_event_desc()
2071 ff->events = events; in process_event_desc()
2083 static int process_cmdline(struct feat_fd *ff, void *data __maybe_unused) in process_cmdline() argument
2088 if (do_read_u32(ff, &nr)) in process_cmdline()
2091 ff->ph->env.nr_cmdline = nr; in process_cmdline()
2093 cmdline = zalloc(ff->size + nr + 1); in process_cmdline()
2102 str = do_read_string(ff); in process_cmdline()
2111 ff->ph->env.cmdline = cmdline; in process_cmdline()
2112 ff->ph->env.cmdline_argv = (const char **) argv; in process_cmdline()
2121 static int process_cpu_topology(struct feat_fd *ff, void *data __maybe_unused) in process_cpu_topology() argument
2126 int cpu_nr = ff->ph->env.nr_cpus_avail; in process_cpu_topology()
2128 struct perf_header *ph = ff->ph; in process_cpu_topology()
2135 if (do_read_u32(ff, &nr)) in process_cpu_topology()
2144 str = do_read_string(ff); in process_cpu_topology()
2156 if (do_read_u32(ff, &nr)) in process_cpu_topology()
2163 str = do_read_string(ff); in process_cpu_topology()
2179 if (ff->size <= size) { in process_cpu_topology()
2194 if (do_read_u32(ff, &nr)) in process_cpu_topology()
2199 if (do_read_u32(ff, &nr)) in process_cpu_topology()
2220 static int process_numa_topology(struct feat_fd *ff, void *data __maybe_unused) in process_numa_topology() argument
2227 if (do_read_u32(ff, &nr)) in process_numa_topology()
2238 if (do_read_u32(ff, &n->node)) in process_numa_topology()
2241 if (do_read_u64(ff, &n->mem_total)) in process_numa_topology()
2244 if (do_read_u64(ff, &n->mem_free)) in process_numa_topology()
2247 str = do_read_string(ff); in process_numa_topology()
2257 ff->ph->env.nr_numa_nodes = nr; in process_numa_topology()
2258 ff->ph->env.numa_nodes = nodes; in process_numa_topology()
2266 static int process_pmu_mappings(struct feat_fd *ff, void *data __maybe_unused) in process_pmu_mappings() argument
2273 if (do_read_u32(ff, &pmu_num)) in process_pmu_mappings()
2281 ff->ph->env.nr_pmu_mappings = pmu_num; in process_pmu_mappings()
2286 if (do_read_u32(ff, &type)) in process_pmu_mappings()
2289 name = do_read_string(ff); in process_pmu_mappings()
2300 ff->ph->env.msr_pmu_type = type; in process_pmu_mappings()
2305 ff->ph->env.pmu_mappings = strbuf_detach(&sb, NULL); in process_pmu_mappings()
2313 static int process_group_desc(struct feat_fd *ff, void *data __maybe_unused) in process_group_desc() argument
2325 if (do_read_u32(ff, &nr_groups)) in process_group_desc()
2328 ff->ph->env.nr_groups = nr_groups; in process_group_desc()
2339 desc[i].name = do_read_string(ff); in process_group_desc()
2343 if (do_read_u32(ff, &desc[i].leader_idx)) in process_group_desc()
2346 if (do_read_u32(ff, &desc[i].nr_members)) in process_group_desc()
2353 session = container_of(ff->ph, struct perf_session, header); in process_group_desc()
2397 static int process_auxtrace(struct feat_fd *ff, void *data __maybe_unused) in process_auxtrace() argument
2402 session = container_of(ff->ph, struct perf_session, header); in process_auxtrace()
2404 err = auxtrace_index__process(ff->fd, ff->size, session, in process_auxtrace()
2405 ff->ph->needs_swap); in process_auxtrace()
2411 static int process_cache(struct feat_fd *ff, void *data __maybe_unused) in process_cache() argument
2416 if (do_read_u32(ff, &version)) in process_cache()
2422 if (do_read_u32(ff, &cnt)) in process_cache()
2433 if (do_read_u32(ff, &c.v))\ in process_cache()
2443 c.v = do_read_string(ff); \ in process_cache()
2455 ff->ph->env.caches = caches; in process_cache()
2456 ff->ph->env.caches_cnt = cnt; in process_cache()
2463 static int process_sample_time(struct feat_fd *ff, void *data __maybe_unused) in process_sample_time() argument
2469 session = container_of(ff->ph, struct perf_session, header); in process_sample_time()
2471 ret = do_read_u64(ff, &first_sample_time); in process_sample_time()
2475 ret = do_read_u64(ff, &last_sample_time); in process_sample_time()
2484 static int process_mem_topology(struct feat_fd *ff, in process_mem_topology() argument
2491 if (do_read_u64(ff, &version)) in process_mem_topology()
2497 if (do_read_u64(ff, &bsize)) in process_mem_topology()
2500 if (do_read_u64(ff, &nr)) in process_mem_topology()
2511 if (do_read_u64(ff, &n.v)) \ in process_mem_topology()
2519 if (do_read_bitmap(ff, &n.set, &n.size)) in process_mem_topology()
2525 ff->ph->env.memory_bsize = bsize; in process_mem_topology()
2526 ff->ph->env.memory_nodes = nodes; in process_mem_topology()
2527 ff->ph->env.nr_memory_nodes = nr; in process_mem_topology()
2537 int (*write)(struct feat_fd *ff, struct perf_evlist *evlist);
2538 void (*print)(struct feat_fd *ff, FILE *fp);
2539 int (*process)(struct feat_fd *ff, void *data);
2607 struct feat_fd ff; in perf_file_section__fprintf_info() local
2621 ff = (struct feat_fd) { in perf_file_section__fprintf_info()
2627 feat_ops[feat].print(&ff, hd->fp); in perf_file_section__fprintf_info()
2675 static int do_write_feat(struct feat_fd *ff, int type, in do_write_feat() argument
2682 if (perf_header__has_feat(ff->ph, type)) { in do_write_feat()
2686 if (WARN(ff->buf, "Error: calling %s in pipe-mode.\n", __func__)) in do_write_feat()
2689 (*p)->offset = lseek(ff->fd, 0, SEEK_CUR); in do_write_feat()
2691 err = feat_ops[type].write(ff, evlist); in do_write_feat()
2696 lseek(ff->fd, (*p)->offset, SEEK_SET); in do_write_feat()
2700 (*p)->size = lseek(ff->fd, 0, SEEK_CUR) - (*p)->offset; in do_write_feat()
2710 struct feat_fd ff; in perf_header__adds_write() local
2717 ff = (struct feat_fd){ in perf_header__adds_write()
2736 if (do_write_feat(&ff, feat, &p, evlist)) in perf_header__adds_write()
2745 err = do_write(&ff, feat_sec, sec_size); in perf_header__adds_write()
2755 struct feat_fd ff; in perf_header__write_pipe() local
2758 ff = (struct feat_fd){ .fd = fd }; in perf_header__write_pipe()
2765 err = do_write(&ff, &f_header, sizeof(f_header)); in perf_header__write_pipe()
2782 struct feat_fd ff; in perf_session__write_header() local
2786 ff = (struct feat_fd){ .fd = fd}; in perf_session__write_header()
2791 err = do_write(&ff, evsel->id, evsel->ids * sizeof(u64)); in perf_session__write_header()
2798 attr_offset = lseek(ff.fd, 0, SEEK_CUR); in perf_session__write_header()
2808 err = do_write(&ff, &f_attr, sizeof(f_attr)); in perf_session__write_header()
2843 err = do_write(&ff, &f_header, sizeof(f_header)); in perf_session__write_header()
3125 struct feat_fd ff = { in perf_file_header__read_pipe() local
3143 if (repipe && do_write(&ff, header, sizeof(*header)) < 0) in perf_file_header__read_pipe()
3404 struct feat_fd ff; in perf_event__synthesize_features() local
3414 memset(&ff, 0, sizeof(ff)); in perf_event__synthesize_features()
3416 ff.buf = malloc(sz); in perf_event__synthesize_features()
3417 if (!ff.buf) in perf_event__synthesize_features()
3420 ff.size = sz - sz_hdr; in perf_event__synthesize_features()
3428 ff.offset = sizeof(*fe); in perf_event__synthesize_features()
3430 ret = feat_ops[feat].write(&ff, evlist); in perf_event__synthesize_features()
3431 if (ret || ff.offset <= (ssize_t)sizeof(*fe)) { in perf_event__synthesize_features()
3435 /* ff.buf may have changed due to realloc in do_write() */ in perf_event__synthesize_features()
3436 fe = ff.buf; in perf_event__synthesize_features()
3441 fe->header.size = ff.offset; in perf_event__synthesize_features()
3443 ret = process(tool, ff.buf, NULL, NULL); in perf_event__synthesize_features()
3445 free(ff.buf); in perf_event__synthesize_features()
3451 fe = ff.buf; in perf_event__synthesize_features()
3456 ret = process(tool, ff.buf, NULL, NULL); in perf_event__synthesize_features()
3458 free(ff.buf); in perf_event__synthesize_features()
3466 struct feat_fd ff = { .fd = 0 }; in perf_event__process_feature() local
3483 ff.buf = (void *)fe->data; in perf_event__process_feature()
3484 ff.size = event->header.size - sizeof(*fe); in perf_event__process_feature()
3485 ff.ph = &session->header; in perf_event__process_feature()
3487 if (feat_ops[feat].process(&ff, NULL)) in perf_event__process_feature()
3495 feat_ops[feat].print(&ff, stdout); in perf_event__process_feature()
3828 struct feat_fd ff; in perf_event__synthesize_tracing_data() local
3863 ff = (struct feat_fd){ .fd = fd }; in perf_event__synthesize_tracing_data()
3864 if (write_padded(&ff, NULL, 0, padding)) in perf_event__synthesize_tracing_data()