Lines Matching refs:session
28 static int perf_session__deliver_event(struct perf_session *session,
33 static int perf_session__open(struct perf_session *session) in perf_session__open() argument
35 struct perf_data *data = session->data; in perf_session__open()
37 if (perf_session__read_header(session) < 0) { in perf_session__open()
45 if (perf_header__has_feat(&session->header, HEADER_STAT)) in perf_session__open()
48 if (!perf_evlist__valid_sample_type(session->evlist)) { in perf_session__open()
53 if (!perf_evlist__valid_sample_id_all(session->evlist)) { in perf_session__open()
58 if (!perf_evlist__valid_read_format(session->evlist)) { in perf_session__open()
66 void perf_session__set_id_hdr_size(struct perf_session *session) in perf_session__set_id_hdr_size() argument
68 u16 id_hdr_size = perf_evlist__id_hdr_size(session->evlist); in perf_session__set_id_hdr_size()
70 machines__set_id_hdr_size(&session->machines, id_hdr_size); in perf_session__set_id_hdr_size()
73 int perf_session__create_kernel_maps(struct perf_session *session) in perf_session__create_kernel_maps() argument
75 int ret = machine__create_kernel_maps(&session->machines.host); in perf_session__create_kernel_maps()
78 ret = machines__create_guest_kernel_maps(&session->machines); in perf_session__create_kernel_maps()
82 static void perf_session__destroy_kernel_maps(struct perf_session *session) in perf_session__destroy_kernel_maps() argument
84 machines__destroy_kernel_maps(&session->machines); in perf_session__destroy_kernel_maps()
87 static bool perf_session__has_comm_exec(struct perf_session *session) in perf_session__has_comm_exec() argument
91 evlist__for_each_entry(session->evlist, evsel) { in perf_session__has_comm_exec()
99 static void perf_session__set_comm_exec(struct perf_session *session) in perf_session__set_comm_exec() argument
101 bool comm_exec = perf_session__has_comm_exec(session); in perf_session__set_comm_exec()
103 machines__set_comm_exec(&session->machines, comm_exec); in perf_session__set_comm_exec()
109 struct perf_session *session = container_of(oe, struct perf_session, in ordered_events__deliver_event() local
112 return perf_session__deliver_event(session, event->event, in ordered_events__deliver_event()
113 session->tool, event->file_offset); in ordered_events__deliver_event()
119 struct perf_session *session = zalloc(sizeof(*session)); in perf_session__new() local
121 if (!session) in perf_session__new()
124 session->repipe = repipe; in perf_session__new()
125 session->tool = tool; in perf_session__new()
126 INIT_LIST_HEAD(&session->auxtrace_index); in perf_session__new()
127 machines__init(&session->machines); in perf_session__new()
128 ordered_events__init(&session->ordered_events, ordered_events__deliver_event); in perf_session__new()
134 session->data = data; in perf_session__new()
137 if (perf_session__open(session) < 0) in perf_session__new()
145 perf_session__set_id_hdr_size(session); in perf_session__new()
146 perf_session__set_comm_exec(session); in perf_session__new()
150 session->machines.host.env = &perf_env; in perf_session__new()
158 if (perf_session__create_kernel_maps(session) < 0) in perf_session__new()
167 tool->ordered_events && !perf_evlist__sample_id_all(session->evlist)) { in perf_session__new()
172 return session; in perf_session__new()
177 perf_session__delete(session); in perf_session__new()
182 static void perf_session__delete_threads(struct perf_session *session) in perf_session__delete_threads() argument
184 machine__delete_threads(&session->machines.host); in perf_session__delete_threads()
187 void perf_session__delete(struct perf_session *session) in perf_session__delete() argument
189 if (session == NULL) in perf_session__delete()
191 auxtrace__free(session); in perf_session__delete()
192 auxtrace_index__free(&session->auxtrace_index); in perf_session__delete()
193 perf_session__destroy_kernel_maps(session); in perf_session__delete()
194 perf_session__delete_threads(session); in perf_session__delete()
195 perf_env__exit(&session->header.env); in perf_session__delete()
196 machines__exit(&session->machines); in perf_session__delete()
197 if (session->data) in perf_session__delete()
198 perf_data__close(session->data); in perf_session__delete()
199 free(session); in perf_session__delete()
206 struct perf_session *session in process_event_synth_tracing_data_stub()
282 struct perf_session *session in process_event_auxtrace_stub()
286 if (perf_data__is_pipe(session->data)) in process_event_auxtrace_stub()
287 skipn(perf_data__fd(session->data), event->auxtrace.size); in process_event_auxtrace_stub()
293 struct perf_session *session __maybe_unused) in process_event_op2_stub()
303 struct perf_session *session __maybe_unused) in process_event_thread_map_stub()
315 struct perf_session *session __maybe_unused) in process_event_cpu_map_stub()
327 struct perf_session *session __maybe_unused) in process_event_stat_config_stub()
1321 static int perf_session__deliver_event(struct perf_session *session, in perf_session__deliver_event() argument
1329 ret = perf_evlist__parse_sample(session->evlist, event, &sample); in perf_session__deliver_event()
1335 ret = auxtrace__process_event(session, event, &sample, tool); in perf_session__deliver_event()
1341 return machines__deliver_event(&session->machines, session->evlist, in perf_session__deliver_event()
1345 static s64 perf_session__process_user_event(struct perf_session *session, in perf_session__process_user_event() argument
1349 struct ordered_events *oe = &session->ordered_events; in perf_session__process_user_event()
1350 struct perf_tool *tool = session->tool; in perf_session__process_user_event()
1352 int fd = perf_data__fd(session->data); in perf_session__process_user_event()
1355 dump_event(session->evlist, event, file_offset, &sample); in perf_session__process_user_event()
1360 err = tool->attr(tool, event, &session->evlist); in perf_session__process_user_event()
1362 perf_session__set_id_hdr_size(session); in perf_session__process_user_event()
1363 perf_session__set_comm_exec(session); in perf_session__process_user_event()
1367 return tool->event_update(tool, event, &session->evlist); in perf_session__process_user_event()
1377 return tool->tracing_data(tool, event, session); in perf_session__process_user_event()
1379 return tool->build_id(tool, event, session); in perf_session__process_user_event()
1383 return tool->id_index(tool, event, session); in perf_session__process_user_event()
1385 return tool->auxtrace_info(tool, event, session); in perf_session__process_user_event()
1389 return tool->auxtrace(tool, event, session); in perf_session__process_user_event()
1391 perf_session__auxtrace_error_inc(session, event); in perf_session__process_user_event()
1392 return tool->auxtrace_error(tool, event, session); in perf_session__process_user_event()
1394 return tool->thread_map(tool, event, session); in perf_session__process_user_event()
1396 return tool->cpu_map(tool, event, session); in perf_session__process_user_event()
1398 return tool->stat_config(tool, event, session); in perf_session__process_user_event()
1400 return tool->stat(tool, event, session); in perf_session__process_user_event()
1402 return tool->stat_round(tool, event, session); in perf_session__process_user_event()
1404 session->time_conv = event->time_conv; in perf_session__process_user_event()
1405 return tool->time_conv(tool, event, session); in perf_session__process_user_event()
1407 return tool->feature(tool, event, session); in perf_session__process_user_event()
1413 int perf_session__deliver_synth_event(struct perf_session *session, in perf_session__deliver_synth_event() argument
1417 struct perf_evlist *evlist = session->evlist; in perf_session__deliver_synth_event()
1418 struct perf_tool *tool = session->tool; in perf_session__deliver_synth_event()
1423 return perf_session__process_user_event(session, event, 0); in perf_session__deliver_synth_event()
1425 return machines__deliver_event(&session->machines, evlist, event, sample, tool, 0); in perf_session__deliver_synth_event()
1437 int perf_session__peek_event(struct perf_session *session, off_t file_offset, in perf_session__peek_event() argument
1446 if (session->one_mmap && !session->header.needs_swap) { in perf_session__peek_event()
1447 event = file_offset - session->one_mmap_offset + in perf_session__peek_event()
1448 session->one_mmap_addr; in perf_session__peek_event()
1452 if (perf_data__is_pipe(session->data)) in perf_session__peek_event()
1455 fd = perf_data__fd(session->data); in perf_session__peek_event()
1467 if (session->header.needs_swap) in perf_session__peek_event()
1478 if (session->header.needs_swap) in perf_session__peek_event()
1479 event_swap(event, perf_evlist__sample_id_all(session->evlist)); in perf_session__peek_event()
1484 perf_evlist__parse_sample(session->evlist, event, sample)) in perf_session__peek_event()
1492 static s64 perf_session__process_event(struct perf_session *session, in perf_session__process_event() argument
1495 struct perf_evlist *evlist = session->evlist; in perf_session__process_event()
1496 struct perf_tool *tool = session->tool; in perf_session__process_event()
1499 if (session->header.needs_swap) in perf_session__process_event()
1508 return perf_session__process_user_event(session, event, file_offset); in perf_session__process_event()
1517 ret = perf_session__queue_event(session, event, timestamp, file_offset); in perf_session__process_event()
1522 return perf_session__deliver_event(session, event, tool, file_offset); in perf_session__process_event()
1532 struct thread *perf_session__findnew(struct perf_session *session, pid_t pid) in perf_session__findnew() argument
1534 return machine__findnew_thread(&session->machines.host, -1, pid); in perf_session__findnew()
1537 int perf_session__register_idle_thread(struct perf_session *session) in perf_session__register_idle_thread() argument
1542 thread = machine__findnew_thread(&session->machines.host, 0, 0); in perf_session__register_idle_thread()
1559 perf_session__warn_order(const struct perf_session *session) in perf_session__warn_order() argument
1561 const struct ordered_events *oe = &session->ordered_events; in perf_session__warn_order()
1565 evlist__for_each_entry(session->evlist, evsel) { in perf_session__warn_order()
1576 static void perf_session__warn_about_errors(const struct perf_session *session) in perf_session__warn_about_errors() argument
1578 const struct events_stats *stats = &session->evlist->stats; in perf_session__warn_about_errors()
1580 if (session->tool->lost == perf_event__process_lost && in perf_session__warn_about_errors()
1588 if (session->tool->lost_samples == perf_event__process_lost_samples) { in perf_session__warn_about_errors()
1600 if (session->tool->aux == perf_event__process_aux && in perf_session__warn_about_errors()
1607 if (session->tool->aux == perf_event__process_aux && in perf_session__warn_about_errors()
1652 perf_session__warn_order(session); in perf_session__warn_about_errors()
1674 static int perf_session__flush_thread_stacks(struct perf_session *session) in perf_session__flush_thread_stacks() argument
1676 return machines__for_each_thread(&session->machines, in perf_session__flush_thread_stacks()
1683 static int __perf_session__process_pipe_events(struct perf_session *session) in __perf_session__process_pipe_events() argument
1685 struct ordered_events *oe = &session->ordered_events; in __perf_session__process_pipe_events()
1686 struct perf_tool *tool = session->tool; in __perf_session__process_pipe_events()
1687 int fd = perf_data__fd(session->data); in __perf_session__process_pipe_events()
1716 if (session->header.needs_swap) in __perf_session__process_pipe_events()
1751 if ((skip = perf_session__process_event(session, event, head)) < 0) { in __perf_session__process_pipe_events()
1770 err = auxtrace__flush_events(session, tool); in __perf_session__process_pipe_events()
1773 err = perf_session__flush_thread_stacks(session); in __perf_session__process_pipe_events()
1777 perf_session__warn_about_errors(session); in __perf_session__process_pipe_events()
1778 ordered_events__free(&session->ordered_events); in __perf_session__process_pipe_events()
1779 auxtrace__free_events(session); in __perf_session__process_pipe_events()
1784 fetch_mmaped_event(struct perf_session *session, in fetch_mmaped_event() argument
1798 if (session->header.needs_swap) in fetch_mmaped_event()
1803 if (session->header.needs_swap) in fetch_mmaped_event()
1823 static int __perf_session__process_events(struct perf_session *session, in __perf_session__process_events() argument
1827 struct ordered_events *oe = &session->ordered_events; in __perf_session__process_events()
1828 struct perf_tool *tool = session->tool; in __perf_session__process_events()
1829 int fd = perf_data__fd(session->data); in __perf_session__process_events()
1855 session->one_mmap = true; in __perf_session__process_events()
1863 if (session->header.needs_swap) { in __perf_session__process_events()
1878 if (session->one_mmap) { in __perf_session__process_events()
1879 session->one_mmap_addr = buf; in __perf_session__process_events()
1880 session->one_mmap_offset = file_offset; in __perf_session__process_events()
1884 event = fetch_mmaped_event(session, head, mmap_size, buf); in __perf_session__process_events()
1900 (skip = perf_session__process_event(session, event, file_pos)) < 0) { in __perf_session__process_events()
1927 err = auxtrace__flush_events(session, tool); in __perf_session__process_events()
1930 err = perf_session__flush_thread_stacks(session); in __perf_session__process_events()
1934 perf_session__warn_about_errors(session); in __perf_session__process_events()
1939 ordered_events__reinit(&session->ordered_events); in __perf_session__process_events()
1940 auxtrace__free_events(session); in __perf_session__process_events()
1941 session->one_mmap = false; in __perf_session__process_events()
1945 int perf_session__process_events(struct perf_session *session) in perf_session__process_events() argument
1947 u64 size = perf_data__size(session->data); in perf_session__process_events()
1950 if (perf_session__register_idle_thread(session) < 0) in perf_session__process_events()
1953 if (!perf_data__is_pipe(session->data)) in perf_session__process_events()
1954 err = __perf_session__process_events(session, in perf_session__process_events()
1955 session->header.data_offset, in perf_session__process_events()
1956 session->header.data_size, size); in perf_session__process_events()
1958 err = __perf_session__process_pipe_events(session); in perf_session__process_events()
1963 bool perf_session__has_traces(struct perf_session *session, const char *msg) in perf_session__has_traces() argument
1967 evlist__for_each_entry(session->evlist, evsel) { in perf_session__has_traces()
2005 size_t perf_session__fprintf_dsos(struct perf_session *session, FILE *fp) in perf_session__fprintf_dsos() argument
2007 return machines__fprintf_dsos(&session->machines, fp); in perf_session__fprintf_dsos()
2010 size_t perf_session__fprintf_dsos_buildid(struct perf_session *session, FILE *fp, in perf_session__fprintf_dsos_buildid() argument
2013 return machines__fprintf_dsos_buildid(&session->machines, fp, skip, parm); in perf_session__fprintf_dsos_buildid()
2016 size_t perf_session__fprintf_nr_events(struct perf_session *session, FILE *fp) in perf_session__fprintf_nr_events() argument
2021 if (perf_header__has_feat(&session->header, HEADER_AUXTRACE)) in perf_session__fprintf_nr_events()
2026 ret += events_stats__fprintf(&session->evlist->stats, fp); in perf_session__fprintf_nr_events()
2030 size_t perf_session__fprintf(struct perf_session *session, FILE *fp) in perf_session__fprintf() argument
2036 return machine__fprintf(&session->machines.host, fp); in perf_session__fprintf()
2039 struct perf_evsel *perf_session__find_first_evtype(struct perf_session *session, in perf_session__find_first_evtype() argument
2044 evlist__for_each_entry(session->evlist, pos) { in perf_session__find_first_evtype()
2051 int perf_session__cpu_bitmap(struct perf_session *session, in perf_session__cpu_bitmap() argument
2060 evsel = perf_session__find_first_evtype(session, i); in perf_session__cpu_bitmap()
2096 void perf_session__fprintf_info(struct perf_session *session, FILE *fp, in perf_session__fprintf_info() argument
2099 if (session == NULL || fp == NULL) in perf_session__fprintf_info()
2103 perf_header__fprintf_info(session, fp, full); in perf_session__fprintf_info()
2108 int __perf_session__set_tracepoints_handlers(struct perf_session *session, in __perf_session__set_tracepoints_handlers() argument
2121 evsel = perf_evlist__find_tracepoint_by_name(session->evlist, assocs[i].name); in __perf_session__set_tracepoints_handlers()
2138 struct perf_session *session) in perf_event__process_id_index() argument
2140 struct perf_evlist *evlist = session->evlist; in perf_event__process_id_index()