Lines Matching refs:session
25 static int perf_session__open(struct perf_session *session) in perf_session__open() argument
27 struct perf_data_file *file = session->file; in perf_session__open()
29 if (perf_session__read_header(session) < 0) { in perf_session__open()
37 if (!perf_evlist__valid_sample_type(session->evlist)) { in perf_session__open()
42 if (!perf_evlist__valid_sample_id_all(session->evlist)) { in perf_session__open()
47 if (!perf_evlist__valid_read_format(session->evlist)) { in perf_session__open()
55 void perf_session__set_id_hdr_size(struct perf_session *session) in perf_session__set_id_hdr_size() argument
57 u16 id_hdr_size = perf_evlist__id_hdr_size(session->evlist); in perf_session__set_id_hdr_size()
59 machines__set_id_hdr_size(&session->machines, id_hdr_size); in perf_session__set_id_hdr_size()
62 int perf_session__create_kernel_maps(struct perf_session *session) in perf_session__create_kernel_maps() argument
64 int ret = machine__create_kernel_maps(&session->machines.host); in perf_session__create_kernel_maps()
67 ret = machines__create_guest_kernel_maps(&session->machines); in perf_session__create_kernel_maps()
71 static void perf_session__destroy_kernel_maps(struct perf_session *session) in perf_session__destroy_kernel_maps() argument
73 machines__destroy_kernel_maps(&session->machines); in perf_session__destroy_kernel_maps()
76 static bool perf_session__has_comm_exec(struct perf_session *session) in perf_session__has_comm_exec() argument
80 evlist__for_each(session->evlist, evsel) { in perf_session__has_comm_exec()
88 static void perf_session__set_comm_exec(struct perf_session *session) in perf_session__set_comm_exec() argument
90 bool comm_exec = perf_session__has_comm_exec(session); in perf_session__set_comm_exec()
92 machines__set_comm_exec(&session->machines, comm_exec); in perf_session__set_comm_exec()
99 struct perf_session *session = container_of(oe, struct perf_session, in ordered_events__deliver_event() local
101 int ret = perf_evlist__parse_sample(session->evlist, event->event, &sample); in ordered_events__deliver_event()
108 return machines__deliver_event(&session->machines, session->evlist, event->event, in ordered_events__deliver_event()
109 &sample, session->tool, event->file_offset); in ordered_events__deliver_event()
115 struct perf_session *session = zalloc(sizeof(*session)); in perf_session__new() local
117 if (!session) in perf_session__new()
120 session->repipe = repipe; in perf_session__new()
121 session->tool = tool; in perf_session__new()
122 machines__init(&session->machines); in perf_session__new()
123 ordered_events__init(&session->ordered_events, ordered_events__deliver_event); in perf_session__new()
129 session->file = file; in perf_session__new()
132 if (perf_session__open(session) < 0) in perf_session__new()
135 perf_session__set_id_hdr_size(session); in perf_session__new()
136 perf_session__set_comm_exec(session); in perf_session__new()
145 if (perf_session__create_kernel_maps(session) < 0) in perf_session__new()
150 tool->ordered_events && !perf_evlist__sample_id_all(session->evlist)) { in perf_session__new()
155 return session; in perf_session__new()
160 perf_session__delete(session); in perf_session__new()
165 static void perf_session__delete_threads(struct perf_session *session) in perf_session__delete_threads() argument
167 machine__delete_threads(&session->machines.host); in perf_session__delete_threads()
186 void perf_session__delete(struct perf_session *session) in perf_session__delete() argument
188 perf_session__destroy_kernel_maps(session); in perf_session__delete()
189 perf_session__delete_threads(session); in perf_session__delete()
190 perf_session_env__delete(&session->header.env); in perf_session__delete()
191 machines__exit(&session->machines); in perf_session__delete()
192 if (session->file) in perf_session__delete()
193 perf_data_file__close(session->file); in perf_session__delete()
194 free(session); in perf_session__delete()
201 struct perf_session *session in process_event_synth_tracing_data_stub()
238 struct perf_session *session __maybe_unused) in process_build_id_stub()
947 static s64 perf_session__process_user_event(struct perf_session *session, in perf_session__process_user_event() argument
951 struct ordered_events *oe = &session->ordered_events; in perf_session__process_user_event()
952 struct perf_tool *tool = session->tool; in perf_session__process_user_event()
953 int fd = perf_data_file__fd(session->file); in perf_session__process_user_event()
956 dump_event(session->evlist, event, file_offset, NULL); in perf_session__process_user_event()
961 err = tool->attr(tool, event, &session->evlist); in perf_session__process_user_event()
963 perf_session__set_id_hdr_size(session); in perf_session__process_user_event()
964 perf_session__set_comm_exec(session); in perf_session__process_user_event()
976 return tool->tracing_data(tool, event, session); in perf_session__process_user_event()
978 return tool->build_id(tool, event, session); in perf_session__process_user_event()
982 return tool->id_index(tool, event, session); in perf_session__process_user_event()
988 int perf_session__deliver_synth_event(struct perf_session *session, in perf_session__deliver_synth_event() argument
992 struct perf_evlist *evlist = session->evlist; in perf_session__deliver_synth_event()
993 struct perf_tool *tool = session->tool; in perf_session__deliver_synth_event()
998 return perf_session__process_user_event(session, event, 0); in perf_session__deliver_synth_event()
1000 return machines__deliver_event(&session->machines, evlist, event, sample, tool, 0); in perf_session__deliver_synth_event()
1012 int perf_session__peek_event(struct perf_session *session, off_t file_offset, in perf_session__peek_event() argument
1021 if (session->one_mmap && !session->header.needs_swap) { in perf_session__peek_event()
1022 event = file_offset - session->one_mmap_offset + in perf_session__peek_event()
1023 session->one_mmap_addr; in perf_session__peek_event()
1027 if (perf_data_file__is_pipe(session->file)) in perf_session__peek_event()
1030 fd = perf_data_file__fd(session->file); in perf_session__peek_event()
1042 if (session->header.needs_swap) in perf_session__peek_event()
1053 if (session->header.needs_swap) in perf_session__peek_event()
1054 event_swap(event, perf_evlist__sample_id_all(session->evlist)); in perf_session__peek_event()
1059 perf_evlist__parse_sample(session->evlist, event, sample)) in perf_session__peek_event()
1067 static s64 perf_session__process_event(struct perf_session *session, in perf_session__process_event() argument
1070 struct perf_evlist *evlist = session->evlist; in perf_session__process_event()
1071 struct perf_tool *tool = session->tool; in perf_session__process_event()
1075 if (session->header.needs_swap) in perf_session__process_event()
1084 return perf_session__process_user_event(session, event, file_offset); in perf_session__process_event()
1094 ret = perf_session__queue_event(session, event, &sample, file_offset); in perf_session__process_event()
1099 return machines__deliver_event(&session->machines, evlist, event, in perf_session__process_event()
1110 struct thread *perf_session__findnew(struct perf_session *session, pid_t pid) in perf_session__findnew() argument
1112 return machine__findnew_thread(&session->machines.host, -1, pid); in perf_session__findnew()
1115 static struct thread *perf_session__register_idle_thread(struct perf_session *session) in perf_session__register_idle_thread() argument
1119 thread = machine__findnew_thread(&session->machines.host, 0, 0); in perf_session__register_idle_thread()
1128 static void perf_session__warn_about_errors(const struct perf_session *session) in perf_session__warn_about_errors() argument
1130 const struct events_stats *stats = &session->evlist->stats; in perf_session__warn_about_errors()
1131 const struct ordered_events *oe = &session->ordered_events; in perf_session__warn_about_errors()
1133 if (session->tool->lost == perf_event__process_lost && in perf_session__warn_about_errors()
1175 static int __perf_session__process_pipe_events(struct perf_session *session) in __perf_session__process_pipe_events() argument
1177 struct ordered_events *oe = &session->ordered_events; in __perf_session__process_pipe_events()
1178 struct perf_tool *tool = session->tool; in __perf_session__process_pipe_events()
1179 int fd = perf_data_file__fd(session->file); in __perf_session__process_pipe_events()
1207 if (session->header.needs_swap) in __perf_session__process_pipe_events()
1242 if ((skip = perf_session__process_event(session, event, head)) < 0) { in __perf_session__process_pipe_events()
1261 perf_session__warn_about_errors(session); in __perf_session__process_pipe_events()
1262 ordered_events__free(&session->ordered_events); in __perf_session__process_pipe_events()
1267 fetch_mmaped_event(struct perf_session *session, in fetch_mmaped_event() argument
1281 if (session->header.needs_swap) in fetch_mmaped_event()
1286 if (session->header.needs_swap) in fetch_mmaped_event()
1306 static int __perf_session__process_events(struct perf_session *session, in __perf_session__process_events() argument
1310 struct ordered_events *oe = &session->ordered_events; in __perf_session__process_events()
1311 struct perf_tool *tool = session->tool; in __perf_session__process_events()
1312 int fd = perf_data_file__fd(session->file); in __perf_session__process_events()
1335 session->one_mmap = true; in __perf_session__process_events()
1343 if (session->header.needs_swap) { in __perf_session__process_events()
1358 if (session->one_mmap) { in __perf_session__process_events()
1359 session->one_mmap_addr = buf; in __perf_session__process_events()
1360 session->one_mmap_offset = file_offset; in __perf_session__process_events()
1364 event = fetch_mmaped_event(session, head, mmap_size, buf); in __perf_session__process_events()
1380 (skip = perf_session__process_event(session, event, file_pos)) < 0) { in __perf_session__process_events()
1407 perf_session__warn_about_errors(session); in __perf_session__process_events()
1408 ordered_events__free(&session->ordered_events); in __perf_session__process_events()
1409 session->one_mmap = false; in __perf_session__process_events()
1413 int perf_session__process_events(struct perf_session *session) in perf_session__process_events() argument
1415 u64 size = perf_data_file__size(session->file); in perf_session__process_events()
1418 if (perf_session__register_idle_thread(session) == NULL) in perf_session__process_events()
1421 if (!perf_data_file__is_pipe(session->file)) in perf_session__process_events()
1422 err = __perf_session__process_events(session, in perf_session__process_events()
1423 session->header.data_offset, in perf_session__process_events()
1424 session->header.data_size, size); in perf_session__process_events()
1426 err = __perf_session__process_pipe_events(session); in perf_session__process_events()
1431 bool perf_session__has_traces(struct perf_session *session, const char *msg) in perf_session__has_traces() argument
1435 evlist__for_each(session->evlist, evsel) { in perf_session__has_traces()
1478 size_t perf_session__fprintf_dsos(struct perf_session *session, FILE *fp) in perf_session__fprintf_dsos() argument
1480 return machines__fprintf_dsos(&session->machines, fp); in perf_session__fprintf_dsos()
1483 size_t perf_session__fprintf_dsos_buildid(struct perf_session *session, FILE *fp, in perf_session__fprintf_dsos_buildid() argument
1486 return machines__fprintf_dsos_buildid(&session->machines, fp, skip, parm); in perf_session__fprintf_dsos_buildid()
1489 size_t perf_session__fprintf_nr_events(struct perf_session *session, FILE *fp) in perf_session__fprintf_nr_events() argument
1493 ret += events_stats__fprintf(&session->evlist->stats, fp); in perf_session__fprintf_nr_events()
1497 size_t perf_session__fprintf(struct perf_session *session, FILE *fp) in perf_session__fprintf() argument
1503 return machine__fprintf(&session->machines.host, fp); in perf_session__fprintf()
1506 struct perf_evsel *perf_session__find_first_evtype(struct perf_session *session, in perf_session__find_first_evtype() argument
1511 evlist__for_each(session->evlist, pos) { in perf_session__find_first_evtype()
1617 int perf_session__cpu_bitmap(struct perf_session *session, in perf_session__cpu_bitmap() argument
1626 evsel = perf_session__find_first_evtype(session, i); in perf_session__cpu_bitmap()
1662 void perf_session__fprintf_info(struct perf_session *session, FILE *fp, in perf_session__fprintf_info() argument
1668 if (session == NULL || fp == NULL) in perf_session__fprintf_info()
1671 fd = perf_data_file__fd(session->file); in perf_session__fprintf_info()
1679 perf_header__fprintf_info(session, fp, full); in perf_session__fprintf_info()
1684 int __perf_session__set_tracepoints_handlers(struct perf_session *session, in __perf_session__set_tracepoints_handlers() argument
1697 evsel = perf_evlist__find_tracepoint_by_name(session->evlist, assocs[i].name); in __perf_session__set_tracepoints_handlers()
1714 struct perf_session *session) in perf_event__process_id_index() argument
1716 struct perf_evlist *evlist = session->evlist; in perf_event__process_id_index()