Lines Matching refs:rec
50 static int record__write(struct record *rec, void *bf, size_t size) in record__write() argument
52 if (perf_data_file__write(rec->session->file, bf, size) < 0) { in record__write()
57 rec->bytes_written += size; in record__write()
66 struct record *rec = container_of(tool, struct record, tool); in process_synthesized_event() local
67 return record__write(rec, event, event->header.size); in process_synthesized_event()
70 static int record__mmap_read(struct record *rec, int idx) in record__mmap_read() argument
72 struct perf_mmap *md = &rec->evlist->mmap[idx]; in record__mmap_read()
83 rec->samples++; in record__mmap_read()
92 if (record__write(rec, buf, size) < 0) { in record__mmap_read()
102 if (record__write(rec, buf, size) < 0) { in record__mmap_read()
108 perf_evlist__mmap_consume(rec->evlist, idx); in record__mmap_read()
136 static int record__open(struct record *rec) in record__open() argument
140 struct perf_evlist *evlist = rec->evlist; in record__open()
141 struct perf_session *session = rec->session; in record__open()
142 struct record_opts *opts = &rec->opts; in record__open()
200 struct record *rec = container_of(tool, struct record, tool); in process_sample_event() local
202 rec->samples++; in process_sample_event()
207 static int process_buildids(struct record *rec) in process_buildids() argument
209 struct perf_data_file *file = &rec->file; in process_buildids()
210 struct perf_session *session = rec->session; in process_buildids()
266 static int record__mmap_read_all(struct record *rec) in record__mmap_read_all() argument
268 u64 bytes_written = rec->bytes_written; in record__mmap_read_all()
272 for (i = 0; i < rec->evlist->nr_mmaps; i++) { in record__mmap_read_all()
273 if (rec->evlist->mmap[i].base) { in record__mmap_read_all()
274 if (record__mmap_read(rec, i) != 0) { in record__mmap_read_all()
285 if (bytes_written != rec->bytes_written) in record__mmap_read_all()
286 rc = record__write(rec, &finished_round_event, sizeof(finished_round_event)); in record__mmap_read_all()
292 static void record__init_features(struct record *rec) in record__init_features() argument
294 struct perf_session *session = rec->session; in record__init_features()
300 if (rec->no_buildid) in record__init_features()
303 if (!have_tracepoints(&rec->evlist->entries)) in record__init_features()
306 if (!rec->opts.branch_stack) in record__init_features()
326 static int __cmd_record(struct record *rec, int argc, const char **argv) in __cmd_record() argument
333 struct perf_tool *tool = &rec->tool; in __cmd_record()
334 struct record_opts *opts = &rec->opts; in __cmd_record()
335 struct perf_data_file *file = &rec->file; in __cmd_record()
340 rec->progname = argv[0]; in __cmd_record()
354 rec->session = session; in __cmd_record()
356 record__init_features(rec); in __cmd_record()
359 err = perf_evlist__prepare_workload(rec->evlist, &opts->target, in __cmd_record()
369 if (record__open(rec) != 0) { in __cmd_record()
374 if (!rec->evlist->nr_groups) in __cmd_record()
382 err = perf_session__write_header(session, rec->evlist, fd, false); in __cmd_record()
387 if (!rec->no_buildid in __cmd_record()
405 if (have_tracepoints(&rec->evlist->entries)) { in __cmd_record()
414 err = perf_event__synthesize_tracing_data(tool, fd, rec->evlist, in __cmd_record()
420 rec->bytes_written += err; in __cmd_record()
443 err = __machine__synthesize_threads(machine, tool, &opts->target, rec->evlist->threads, in __cmd_record()
448 if (rec->realtime_prio) { in __cmd_record()
451 param.sched_priority = rec->realtime_prio; in __cmd_record()
465 perf_evlist__enable(rec->evlist); in __cmd_record()
471 perf_evlist__start_workload(rec->evlist); in __cmd_record()
475 perf_evlist__enable(rec->evlist); in __cmd_record()
479 int hits = rec->samples; in __cmd_record()
481 if (record__mmap_read_all(rec) < 0) { in __cmd_record()
486 if (hits == rec->samples) { in __cmd_record()
489 err = perf_evlist__poll(rec->evlist, -1); in __cmd_record()
498 if (perf_evlist__filter_pollfd(rec->evlist, POLLERR | POLLHUP) == 0) in __cmd_record()
508 perf_evlist__disable(rec->evlist); in __cmd_record()
529 kill(rec->evlist->workload.pid, SIGTERM); in __cmd_record()
543 rec->samples = 0; in __cmd_record()
546 rec->session->header.data_size += rec->bytes_written; in __cmd_record()
548 if (!rec->no_buildid) in __cmd_record()
549 process_buildids(rec); in __cmd_record()
550 perf_session__write_header(rec->session, rec->evlist, fd, true); in __cmd_record()
556 if (rec->samples) in __cmd_record()
558 " (%" PRIu64 " samples)", rec->samples); in __cmd_record()
940 struct record *rec = &record; in cmd_record() local
943 rec->evlist = perf_evlist__new(); in cmd_record()
944 if (rec->evlist == NULL) in cmd_record()
947 perf_config(perf_record_config, rec); in cmd_record()
951 if (!argc && target__none(&rec->opts.target)) in cmd_record()
954 if (nr_cgroups && !rec->opts.target.system_wide) { in cmd_record()
972 if (rec->no_buildid_cache || rec->no_buildid) in cmd_record()
975 if (rec->evlist->nr_entries == 0 && in cmd_record()
976 perf_evlist__add_default(rec->evlist) < 0) { in cmd_record()
981 if (rec->opts.target.tid && !rec->opts.no_inherit_set) in cmd_record()
982 rec->opts.no_inherit = true; in cmd_record()
984 err = target__validate(&rec->opts.target); in cmd_record()
986 target__strerror(&rec->opts.target, err, errbuf, BUFSIZ); in cmd_record()
990 err = target__parse_uid(&rec->opts.target); in cmd_record()
994 target__strerror(&rec->opts.target, err, errbuf, BUFSIZ); in cmd_record()
1002 if (perf_evlist__create_maps(rec->evlist, &rec->opts.target) < 0) in cmd_record()
1005 if (record_opts__config(&rec->opts)) { in cmd_record()
1012 perf_evlist__delete(rec->evlist); in cmd_record()