aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/util/session.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/perf/util/session.c')
-rw-r--r--tools/perf/util/session.c44
1 files changed, 22 insertions, 22 deletions
diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c
index b3fd62f7e4c9..c09b748ab599 100644
--- a/tools/perf/util/session.c
+++ b/tools/perf/util/session.c
@@ -32,14 +32,14 @@ static int perf_session__deliver_event(struct perf_session *session,
32 32
33static int perf_session__open(struct perf_session *session) 33static int perf_session__open(struct perf_session *session)
34{ 34{
35 struct perf_data_file *file = session->file; 35 struct perf_data *data = session->data;
36 36
37 if (perf_session__read_header(session) < 0) { 37 if (perf_session__read_header(session) < 0) {
38 pr_err("incompatible file format (rerun with -v to learn more)\n"); 38 pr_err("incompatible file format (rerun with -v to learn more)\n");
39 return -1; 39 return -1;
40 } 40 }
41 41
42 if (perf_data_file__is_pipe(file)) 42 if (perf_data__is_pipe(data))
43 return 0; 43 return 0;
44 44
45 if (perf_header__has_feat(&session->header, HEADER_STAT)) 45 if (perf_header__has_feat(&session->header, HEADER_STAT))
@@ -120,7 +120,7 @@ static int ordered_events__deliver_event(struct ordered_events *oe,
120 session->tool, event->file_offset); 120 session->tool, event->file_offset);
121} 121}
122 122
123struct perf_session *perf_session__new(struct perf_data_file *file, 123struct perf_session *perf_session__new(struct perf_data *data,
124 bool repipe, struct perf_tool *tool) 124 bool repipe, struct perf_tool *tool)
125{ 125{
126 struct perf_session *session = zalloc(sizeof(*session)); 126 struct perf_session *session = zalloc(sizeof(*session));
@@ -134,13 +134,13 @@ struct perf_session *perf_session__new(struct perf_data_file *file,
134 machines__init(&session->machines); 134 machines__init(&session->machines);
135 ordered_events__init(&session->ordered_events, ordered_events__deliver_event); 135 ordered_events__init(&session->ordered_events, ordered_events__deliver_event);
136 136
137 if (file) { 137 if (data) {
138 if (perf_data_file__open(file)) 138 if (perf_data__open(data))
139 goto out_delete; 139 goto out_delete;
140 140
141 session->file = file; 141 session->data = data;
142 142
143 if (perf_data_file__is_read(file)) { 143 if (perf_data__is_read(data)) {
144 if (perf_session__open(session) < 0) 144 if (perf_session__open(session) < 0)
145 goto out_close; 145 goto out_close;
146 146
@@ -148,7 +148,7 @@ struct perf_session *perf_session__new(struct perf_data_file *file,
148 * set session attributes that are present in perf.data 148 * set session attributes that are present in perf.data
149 * but not in pipe-mode. 149 * but not in pipe-mode.
150 */ 150 */
151 if (!file->is_pipe) { 151 if (!data->is_pipe) {
152 perf_session__set_id_hdr_size(session); 152 perf_session__set_id_hdr_size(session);
153 perf_session__set_comm_exec(session); 153 perf_session__set_comm_exec(session);
154 } 154 }
@@ -157,7 +157,7 @@ struct perf_session *perf_session__new(struct perf_data_file *file,
157 session->machines.host.env = &perf_env; 157 session->machines.host.env = &perf_env;
158 } 158 }
159 159
160 if (!file || perf_data_file__is_write(file)) { 160 if (!data || perf_data__is_write(data)) {
161 /* 161 /*
162 * In O_RDONLY mode this will be performed when reading the 162 * In O_RDONLY mode this will be performed when reading the
163 * kernel MMAP event, in perf_event__process_mmap(). 163 * kernel MMAP event, in perf_event__process_mmap().
@@ -170,7 +170,7 @@ struct perf_session *perf_session__new(struct perf_data_file *file,
170 * In pipe-mode, evlist is empty until PERF_RECORD_HEADER_ATTR is 170 * In pipe-mode, evlist is empty until PERF_RECORD_HEADER_ATTR is
171 * processed, so perf_evlist__sample_id_all is not meaningful here. 171 * processed, so perf_evlist__sample_id_all is not meaningful here.
172 */ 172 */
173 if ((!file || !file->is_pipe) && tool && tool->ordering_requires_timestamps && 173 if ((!data || !data->is_pipe) && tool && tool->ordering_requires_timestamps &&
174 tool->ordered_events && !perf_evlist__sample_id_all(session->evlist)) { 174 tool->ordered_events && !perf_evlist__sample_id_all(session->evlist)) {
175 dump_printf("WARNING: No sample_id_all support, falling back to unordered processing\n"); 175 dump_printf("WARNING: No sample_id_all support, falling back to unordered processing\n");
176 tool->ordered_events = false; 176 tool->ordered_events = false;
@@ -179,7 +179,7 @@ struct perf_session *perf_session__new(struct perf_data_file *file,
179 return session; 179 return session;
180 180
181 out_close: 181 out_close:
182 perf_data_file__close(file); 182 perf_data__close(data);
183 out_delete: 183 out_delete:
184 perf_session__delete(session); 184 perf_session__delete(session);
185 out: 185 out:
@@ -201,8 +201,8 @@ void perf_session__delete(struct perf_session *session)
201 perf_session__delete_threads(session); 201 perf_session__delete_threads(session);
202 perf_env__exit(&session->header.env); 202 perf_env__exit(&session->header.env);
203 machines__exit(&session->machines); 203 machines__exit(&session->machines);
204 if (session->file) 204 if (session->data)
205 perf_data_file__close(session->file); 205 perf_data__close(session->data);
206 free(session); 206 free(session);
207} 207}
208 208
@@ -290,8 +290,8 @@ static s64 process_event_auxtrace_stub(struct perf_tool *tool __maybe_unused,
290 __maybe_unused) 290 __maybe_unused)
291{ 291{
292 dump_printf(": unhandled!\n"); 292 dump_printf(": unhandled!\n");
293 if (perf_data_file__is_pipe(session->file)) 293 if (perf_data__is_pipe(session->data))
294 skipn(perf_data_file__fd(session->file), event->auxtrace.size); 294 skipn(perf_data__fd(session->data), event->auxtrace.size);
295 return event->auxtrace.size; 295 return event->auxtrace.size;
296} 296}
297 297
@@ -1349,7 +1349,7 @@ static s64 perf_session__process_user_event(struct perf_session *session,
1349{ 1349{
1350 struct ordered_events *oe = &session->ordered_events; 1350 struct ordered_events *oe = &session->ordered_events;
1351 struct perf_tool *tool = session->tool; 1351 struct perf_tool *tool = session->tool;
1352 int fd = perf_data_file__fd(session->file); 1352 int fd = perf_data__fd(session->data);
1353 int err; 1353 int err;
1354 1354
1355 dump_event(session->evlist, event, file_offset, NULL); 1355 dump_event(session->evlist, event, file_offset, NULL);
@@ -1449,10 +1449,10 @@ int perf_session__peek_event(struct perf_session *session, off_t file_offset,
1449 goto out_parse_sample; 1449 goto out_parse_sample;
1450 } 1450 }
1451 1451
1452 if (perf_data_file__is_pipe(session->file)) 1452 if (perf_data__is_pipe(session->data))
1453 return -1; 1453 return -1;
1454 1454
1455 fd = perf_data_file__fd(session->file); 1455 fd = perf_data__fd(session->data);
1456 hdr_sz = sizeof(struct perf_event_header); 1456 hdr_sz = sizeof(struct perf_event_header);
1457 1457
1458 if (buf_sz < hdr_sz) 1458 if (buf_sz < hdr_sz)
@@ -1687,7 +1687,7 @@ static int __perf_session__process_pipe_events(struct perf_session *session)
1687{ 1687{
1688 struct ordered_events *oe = &session->ordered_events; 1688 struct ordered_events *oe = &session->ordered_events;
1689 struct perf_tool *tool = session->tool; 1689 struct perf_tool *tool = session->tool;
1690 int fd = perf_data_file__fd(session->file); 1690 int fd = perf_data__fd(session->data);
1691 union perf_event *event; 1691 union perf_event *event;
1692 uint32_t size, cur_size = 0; 1692 uint32_t size, cur_size = 0;
1693 void *buf = NULL; 1693 void *buf = NULL;
@@ -1828,7 +1828,7 @@ static int __perf_session__process_events(struct perf_session *session,
1828{ 1828{
1829 struct ordered_events *oe = &session->ordered_events; 1829 struct ordered_events *oe = &session->ordered_events;
1830 struct perf_tool *tool = session->tool; 1830 struct perf_tool *tool = session->tool;
1831 int fd = perf_data_file__fd(session->file); 1831 int fd = perf_data__fd(session->data);
1832 u64 head, page_offset, file_offset, file_pos, size; 1832 u64 head, page_offset, file_offset, file_pos, size;
1833 int err, mmap_prot, mmap_flags, map_idx = 0; 1833 int err, mmap_prot, mmap_flags, map_idx = 0;
1834 size_t mmap_size; 1834 size_t mmap_size;
@@ -1945,13 +1945,13 @@ out_err:
1945 1945
1946int perf_session__process_events(struct perf_session *session) 1946int perf_session__process_events(struct perf_session *session)
1947{ 1947{
1948 u64 size = perf_data_file__size(session->file); 1948 u64 size = perf_data__size(session->data);
1949 int err; 1949 int err;
1950 1950
1951 if (perf_session__register_idle_thread(session) < 0) 1951 if (perf_session__register_idle_thread(session) < 0)
1952 return -ENOMEM; 1952 return -ENOMEM;
1953 1953
1954 if (!perf_data_file__is_pipe(session->file)) 1954 if (!perf_data__is_pipe(session->data))
1955 err = __perf_session__process_events(session, 1955 err = __perf_session__process_events(session,
1956 session->header.data_offset, 1956 session->header.data_offset,
1957 session->header.data_size, size); 1957 session->header.data_size, size);