Lines Matching refs:session
21 static int perf_session__deliver_event(struct perf_session *session,
27 static int perf_session__open(struct perf_session *session) in perf_session__open() argument
29 struct perf_data_file *file = session->file; in perf_session__open()
31 if (perf_session__read_header(session) < 0) { in perf_session__open()
39 if (!perf_evlist__valid_sample_type(session->evlist)) { in perf_session__open()
44 if (!perf_evlist__valid_sample_id_all(session->evlist)) { in perf_session__open()
49 if (!perf_evlist__valid_read_format(session->evlist)) { in perf_session__open()
57 void perf_session__set_id_hdr_size(struct perf_session *session) in perf_session__set_id_hdr_size() argument
59 u16 id_hdr_size = perf_evlist__id_hdr_size(session->evlist); in perf_session__set_id_hdr_size()
61 machines__set_id_hdr_size(&session->machines, id_hdr_size); in perf_session__set_id_hdr_size()
64 int perf_session__create_kernel_maps(struct perf_session *session) in perf_session__create_kernel_maps() argument
66 int ret = machine__create_kernel_maps(&session->machines.host); in perf_session__create_kernel_maps()
69 ret = machines__create_guest_kernel_maps(&session->machines); in perf_session__create_kernel_maps()
73 static void perf_session__destroy_kernel_maps(struct perf_session *session) in perf_session__destroy_kernel_maps() argument
75 machines__destroy_kernel_maps(&session->machines); in perf_session__destroy_kernel_maps()
78 static bool perf_session__has_comm_exec(struct perf_session *session) in perf_session__has_comm_exec() argument
82 evlist__for_each(session->evlist, evsel) { in perf_session__has_comm_exec()
90 static void perf_session__set_comm_exec(struct perf_session *session) in perf_session__set_comm_exec() argument
92 bool comm_exec = perf_session__has_comm_exec(session); in perf_session__set_comm_exec()
94 machines__set_comm_exec(&session->machines, comm_exec); in perf_session__set_comm_exec()
101 struct perf_session *session = container_of(oe, struct perf_session, in ordered_events__deliver_event() local
103 int ret = perf_evlist__parse_sample(session->evlist, event->event, &sample); in ordered_events__deliver_event()
110 return perf_session__deliver_event(session, event->event, &sample, in ordered_events__deliver_event()
111 session->tool, event->file_offset); in ordered_events__deliver_event()
117 struct perf_session *session = zalloc(sizeof(*session)); in perf_session__new() local
119 if (!session) in perf_session__new()
122 session->repipe = repipe; in perf_session__new()
123 session->tool = tool; in perf_session__new()
124 INIT_LIST_HEAD(&session->auxtrace_index); in perf_session__new()
125 machines__init(&session->machines); in perf_session__new()
126 ordered_events__init(&session->ordered_events, ordered_events__deliver_event); in perf_session__new()
132 session->file = file; in perf_session__new()
135 if (perf_session__open(session) < 0) in perf_session__new()
138 perf_session__set_id_hdr_size(session); in perf_session__new()
139 perf_session__set_comm_exec(session); in perf_session__new()
142 session->machines.host.env = &perf_env; in perf_session__new()
150 if (perf_session__create_kernel_maps(session) < 0) in perf_session__new()
155 tool->ordered_events && !perf_evlist__sample_id_all(session->evlist)) { in perf_session__new()
160 return session; in perf_session__new()
165 perf_session__delete(session); in perf_session__new()
170 static void perf_session__delete_threads(struct perf_session *session) in perf_session__delete_threads() argument
172 machine__delete_threads(&session->machines.host); in perf_session__delete_threads()
175 void perf_session__delete(struct perf_session *session) in perf_session__delete() argument
177 auxtrace__free(session); in perf_session__delete()
178 auxtrace_index__free(&session->auxtrace_index); in perf_session__delete()
179 perf_session__destroy_kernel_maps(session); in perf_session__delete()
180 perf_session__delete_threads(session); in perf_session__delete()
181 perf_env__exit(&session->header.env); in perf_session__delete()
182 machines__exit(&session->machines); in perf_session__delete()
183 if (session->file) in perf_session__delete()
184 perf_data_file__close(session->file); in perf_session__delete()
185 free(session); in perf_session__delete()
192 struct perf_session *session in process_event_synth_tracing_data_stub()
229 struct perf_session *session __maybe_unused) in process_build_id_stub()
258 struct perf_session *session __maybe_unused) in process_event_auxtrace_info_stub()
281 struct perf_session *session in process_event_auxtrace_stub()
285 if (perf_data_file__is_pipe(session->file)) in process_event_auxtrace_stub()
286 skipn(perf_data_file__fd(session->file), event->auxtrace.size); in process_event_auxtrace_stub()
293 struct perf_session *session __maybe_unused) in process_event_auxtrace_error_stub()
1119 static int perf_session__deliver_event(struct perf_session *session, in perf_session__deliver_event() argument
1127 ret = auxtrace__process_event(session, event, sample, tool); in perf_session__deliver_event()
1133 return machines__deliver_event(&session->machines, session->evlist, in perf_session__deliver_event()
1137 static s64 perf_session__process_user_event(struct perf_session *session, in perf_session__process_user_event() argument
1141 struct ordered_events *oe = &session->ordered_events; in perf_session__process_user_event()
1142 struct perf_tool *tool = session->tool; in perf_session__process_user_event()
1143 int fd = perf_data_file__fd(session->file); in perf_session__process_user_event()
1146 dump_event(session->evlist, event, file_offset, NULL); in perf_session__process_user_event()
1151 err = tool->attr(tool, event, &session->evlist); in perf_session__process_user_event()
1153 perf_session__set_id_hdr_size(session); in perf_session__process_user_event()
1154 perf_session__set_comm_exec(session); in perf_session__process_user_event()
1166 return tool->tracing_data(tool, event, session); in perf_session__process_user_event()
1168 return tool->build_id(tool, event, session); in perf_session__process_user_event()
1172 return tool->id_index(tool, event, session); in perf_session__process_user_event()
1174 return tool->auxtrace_info(tool, event, session); in perf_session__process_user_event()
1178 return tool->auxtrace(tool, event, session); in perf_session__process_user_event()
1180 perf_session__auxtrace_error_inc(session, event); in perf_session__process_user_event()
1181 return tool->auxtrace_error(tool, event, session); in perf_session__process_user_event()
1187 int perf_session__deliver_synth_event(struct perf_session *session, in perf_session__deliver_synth_event() argument
1191 struct perf_evlist *evlist = session->evlist; in perf_session__deliver_synth_event()
1192 struct perf_tool *tool = session->tool; in perf_session__deliver_synth_event()
1197 return perf_session__process_user_event(session, event, 0); in perf_session__deliver_synth_event()
1199 return machines__deliver_event(&session->machines, evlist, event, sample, tool, 0); in perf_session__deliver_synth_event()
1211 int perf_session__peek_event(struct perf_session *session, off_t file_offset, in perf_session__peek_event() argument
1220 if (session->one_mmap && !session->header.needs_swap) { in perf_session__peek_event()
1221 event = file_offset - session->one_mmap_offset + in perf_session__peek_event()
1222 session->one_mmap_addr; in perf_session__peek_event()
1226 if (perf_data_file__is_pipe(session->file)) in perf_session__peek_event()
1229 fd = perf_data_file__fd(session->file); in perf_session__peek_event()
1241 if (session->header.needs_swap) in perf_session__peek_event()
1252 if (session->header.needs_swap) in perf_session__peek_event()
1253 event_swap(event, perf_evlist__sample_id_all(session->evlist)); in perf_session__peek_event()
1258 perf_evlist__parse_sample(session->evlist, event, sample)) in perf_session__peek_event()
1266 static s64 perf_session__process_event(struct perf_session *session, in perf_session__process_event() argument
1269 struct perf_evlist *evlist = session->evlist; in perf_session__process_event()
1270 struct perf_tool *tool = session->tool; in perf_session__process_event()
1274 if (session->header.needs_swap) in perf_session__process_event()
1283 return perf_session__process_user_event(session, event, file_offset); in perf_session__process_event()
1293 ret = perf_session__queue_event(session, event, &sample, file_offset); in perf_session__process_event()
1298 return perf_session__deliver_event(session, event, &sample, tool, in perf_session__process_event()
1309 struct thread *perf_session__findnew(struct perf_session *session, pid_t pid) in perf_session__findnew() argument
1311 return machine__findnew_thread(&session->machines.host, -1, pid); in perf_session__findnew()
1314 struct thread *perf_session__register_idle_thread(struct perf_session *session) in perf_session__register_idle_thread() argument
1318 thread = machine__findnew_thread(&session->machines.host, 0, 0); in perf_session__register_idle_thread()
1327 static void perf_session__warn_about_errors(const struct perf_session *session) in perf_session__warn_about_errors() argument
1329 const struct events_stats *stats = &session->evlist->stats; in perf_session__warn_about_errors()
1330 const struct ordered_events *oe = &session->ordered_events; in perf_session__warn_about_errors()
1332 if (session->tool->lost == perf_event__process_lost && in perf_session__warn_about_errors()
1340 if (session->tool->lost_samples == perf_event__process_lost_samples) { in perf_session__warn_about_errors()
1352 if (session->tool->aux == perf_event__process_aux && in perf_session__warn_about_errors()
1410 static int perf_session__flush_thread_stacks(struct perf_session *session) in perf_session__flush_thread_stacks() argument
1412 return machines__for_each_thread(&session->machines, in perf_session__flush_thread_stacks()
1419 static int __perf_session__process_pipe_events(struct perf_session *session) in __perf_session__process_pipe_events() argument
1421 struct ordered_events *oe = &session->ordered_events; in __perf_session__process_pipe_events()
1422 struct perf_tool *tool = session->tool; in __perf_session__process_pipe_events()
1423 int fd = perf_data_file__fd(session->file); in __perf_session__process_pipe_events()
1451 if (session->header.needs_swap) in __perf_session__process_pipe_events()
1486 if ((skip = perf_session__process_event(session, event, head)) < 0) { in __perf_session__process_pipe_events()
1505 err = auxtrace__flush_events(session, tool); in __perf_session__process_pipe_events()
1508 err = perf_session__flush_thread_stacks(session); in __perf_session__process_pipe_events()
1511 perf_session__warn_about_errors(session); in __perf_session__process_pipe_events()
1512 ordered_events__free(&session->ordered_events); in __perf_session__process_pipe_events()
1513 auxtrace__free_events(session); in __perf_session__process_pipe_events()
1518 fetch_mmaped_event(struct perf_session *session, in fetch_mmaped_event() argument
1532 if (session->header.needs_swap) in fetch_mmaped_event()
1537 if (session->header.needs_swap) in fetch_mmaped_event()
1557 static int __perf_session__process_events(struct perf_session *session, in __perf_session__process_events() argument
1561 struct ordered_events *oe = &session->ordered_events; in __perf_session__process_events()
1562 struct perf_tool *tool = session->tool; in __perf_session__process_events()
1563 int fd = perf_data_file__fd(session->file); in __perf_session__process_events()
1589 session->one_mmap = true; in __perf_session__process_events()
1597 if (session->header.needs_swap) { in __perf_session__process_events()
1612 if (session->one_mmap) { in __perf_session__process_events()
1613 session->one_mmap_addr = buf; in __perf_session__process_events()
1614 session->one_mmap_offset = file_offset; in __perf_session__process_events()
1618 event = fetch_mmaped_event(session, head, mmap_size, buf); in __perf_session__process_events()
1634 (skip = perf_session__process_event(session, event, file_pos)) < 0) { in __perf_session__process_events()
1661 err = auxtrace__flush_events(session, tool); in __perf_session__process_events()
1664 err = perf_session__flush_thread_stacks(session); in __perf_session__process_events()
1667 perf_session__warn_about_errors(session); in __perf_session__process_events()
1668 ordered_events__free(&session->ordered_events); in __perf_session__process_events()
1669 auxtrace__free_events(session); in __perf_session__process_events()
1670 session->one_mmap = false; in __perf_session__process_events()
1674 int perf_session__process_events(struct perf_session *session) in perf_session__process_events() argument
1676 u64 size = perf_data_file__size(session->file); in perf_session__process_events()
1679 if (perf_session__register_idle_thread(session) == NULL) in perf_session__process_events()
1682 if (!perf_data_file__is_pipe(session->file)) in perf_session__process_events()
1683 err = __perf_session__process_events(session, in perf_session__process_events()
1684 session->header.data_offset, in perf_session__process_events()
1685 session->header.data_size, size); in perf_session__process_events()
1687 err = __perf_session__process_pipe_events(session); in perf_session__process_events()
1692 bool perf_session__has_traces(struct perf_session *session, const char *msg) in perf_session__has_traces() argument
1696 evlist__for_each(session->evlist, evsel) { in perf_session__has_traces()
1739 size_t perf_session__fprintf_dsos(struct perf_session *session, FILE *fp) in perf_session__fprintf_dsos() argument
1741 return machines__fprintf_dsos(&session->machines, fp); in perf_session__fprintf_dsos()
1744 size_t perf_session__fprintf_dsos_buildid(struct perf_session *session, FILE *fp, in perf_session__fprintf_dsos_buildid() argument
1747 return machines__fprintf_dsos_buildid(&session->machines, fp, skip, parm); in perf_session__fprintf_dsos_buildid()
1750 size_t perf_session__fprintf_nr_events(struct perf_session *session, FILE *fp) in perf_session__fprintf_nr_events() argument
1755 if (perf_header__has_feat(&session->header, HEADER_AUXTRACE)) in perf_session__fprintf_nr_events()
1760 ret += events_stats__fprintf(&session->evlist->stats, fp); in perf_session__fprintf_nr_events()
1764 size_t perf_session__fprintf(struct perf_session *session, FILE *fp) in perf_session__fprintf() argument
1770 return machine__fprintf(&session->machines.host, fp); in perf_session__fprintf()
1773 struct perf_evsel *perf_session__find_first_evtype(struct perf_session *session, in perf_session__find_first_evtype() argument
1778 evlist__for_each(session->evlist, pos) { in perf_session__find_first_evtype()
1884 int perf_session__cpu_bitmap(struct perf_session *session, in perf_session__cpu_bitmap() argument
1893 evsel = perf_session__find_first_evtype(session, i); in perf_session__cpu_bitmap()
1929 void perf_session__fprintf_info(struct perf_session *session, FILE *fp, in perf_session__fprintf_info() argument
1935 if (session == NULL || fp == NULL) in perf_session__fprintf_info()
1938 fd = perf_data_file__fd(session->file); in perf_session__fprintf_info()
1946 perf_header__fprintf_info(session, fp, full); in perf_session__fprintf_info()
1951 int __perf_session__set_tracepoints_handlers(struct perf_session *session, in __perf_session__set_tracepoints_handlers() argument
1964 evsel = perf_evlist__find_tracepoint_by_name(session->evlist, assocs[i].name); in __perf_session__set_tracepoints_handlers()
1981 struct perf_session *session) in perf_event__process_id_index() argument
1983 struct perf_evlist *evlist = session->evlist; in perf_event__process_id_index()