aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/util/session.c
diff options
context:
space:
mode:
authorArnaldo Carvalho de Melo <acme@redhat.com>2013-11-05 13:32:36 -0500
committerArnaldo Carvalho de Melo <acme@redhat.com>2013-11-05 13:32:36 -0500
commit316c7136f8bad924609163b9b115f68d59a68c82 (patch)
treeba664f98d92563544aa63dfb63ae4b49c27929c6 /tools/perf/util/session.c
parent714647bdc516330e4405b39677d7f763e016c685 (diff)
perf tools: Finish the removal of 'self' arguments
They convey no information, perhaps I was bitten by some snake at some point, complete the detox by naming the last of those arguments more sensibly. Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: David Ahern <dsahern@gmail.com> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Jiri Olsa <jolsa@redhat.com> Cc: Mike Galbraith <efault@gmx.de> Cc: Paul Mackerras <paulus@samba.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Stephane Eranian <eranian@google.com> Link: http://lkml.kernel.org/n/tip-u1r0dnjoro08dgztiy2g3t2q@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/util/session.c')
-rw-r--r--tools/perf/util/session.c121
1 files changed, 60 insertions, 61 deletions
diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c
index 3c1b30103d54..0ce46943d627 100644
--- a/tools/perf/util/session.c
+++ b/tools/perf/util/session.c
@@ -16,11 +16,11 @@
16#include "perf_regs.h" 16#include "perf_regs.h"
17#include "vdso.h" 17#include "vdso.h"
18 18
19static int perf_session__open(struct perf_session *self) 19static int perf_session__open(struct perf_session *session)
20{ 20{
21 struct perf_data_file *file = self->file; 21 struct perf_data_file *file = session->file;
22 22
23 if (perf_session__read_header(self) < 0) { 23 if (perf_session__read_header(session) < 0) {
24 pr_err("incompatible file format (rerun with -v to learn more)"); 24 pr_err("incompatible file format (rerun with -v to learn more)");
25 return -1; 25 return -1;
26 } 26 }
@@ -28,17 +28,17 @@ static int perf_session__open(struct perf_session *self)
28 if (perf_data_file__is_pipe(file)) 28 if (perf_data_file__is_pipe(file))
29 return 0; 29 return 0;
30 30
31 if (!perf_evlist__valid_sample_type(self->evlist)) { 31 if (!perf_evlist__valid_sample_type(session->evlist)) {
32 pr_err("non matching sample_type"); 32 pr_err("non matching sample_type");
33 return -1; 33 return -1;
34 } 34 }
35 35
36 if (!perf_evlist__valid_sample_id_all(self->evlist)) { 36 if (!perf_evlist__valid_sample_id_all(session->evlist)) {
37 pr_err("non matching sample_id_all"); 37 pr_err("non matching sample_id_all");
38 return -1; 38 return -1;
39 } 39 }
40 40
41 if (!perf_evlist__valid_read_format(self->evlist)) { 41 if (!perf_evlist__valid_read_format(session->evlist)) {
42 pr_err("non matching read_format"); 42 pr_err("non matching read_format");
43 return -1; 43 return -1;
44 } 44 }
@@ -53,46 +53,45 @@ void perf_session__set_id_hdr_size(struct perf_session *session)
53 machines__set_id_hdr_size(&session->machines, id_hdr_size); 53 machines__set_id_hdr_size(&session->machines, id_hdr_size);
54} 54}
55 55
56int perf_session__create_kernel_maps(struct perf_session *self) 56int perf_session__create_kernel_maps(struct perf_session *session)
57{ 57{
58 int ret = machine__create_kernel_maps(&self->machines.host); 58 int ret = machine__create_kernel_maps(&session->machines.host);
59 59
60 if (ret >= 0) 60 if (ret >= 0)
61 ret = machines__create_guest_kernel_maps(&self->machines); 61 ret = machines__create_guest_kernel_maps(&session->machines);
62 return ret; 62 return ret;
63} 63}
64 64
65static void perf_session__destroy_kernel_maps(struct perf_session *self) 65static void perf_session__destroy_kernel_maps(struct perf_session *session)
66{ 66{
67 machines__destroy_kernel_maps(&self->machines); 67 machines__destroy_kernel_maps(&session->machines);
68} 68}
69 69
70struct perf_session *perf_session__new(struct perf_data_file *file, 70struct perf_session *perf_session__new(struct perf_data_file *file,
71 bool repipe, struct perf_tool *tool) 71 bool repipe, struct perf_tool *tool)
72{ 72{
73 struct perf_session *self; 73 struct perf_session *session = zalloc(sizeof(*session));
74 74
75 self = zalloc(sizeof(*self)); 75 if (!session)
76 if (!self)
77 goto out; 76 goto out;
78 77
79 self->repipe = repipe; 78 session->repipe = repipe;
80 INIT_LIST_HEAD(&self->ordered_samples.samples); 79 INIT_LIST_HEAD(&session->ordered_samples.samples);
81 INIT_LIST_HEAD(&self->ordered_samples.sample_cache); 80 INIT_LIST_HEAD(&session->ordered_samples.sample_cache);
82 INIT_LIST_HEAD(&self->ordered_samples.to_free); 81 INIT_LIST_HEAD(&session->ordered_samples.to_free);
83 machines__init(&self->machines); 82 machines__init(&session->machines);
84 83
85 if (file) { 84 if (file) {
86 if (perf_data_file__open(file)) 85 if (perf_data_file__open(file))
87 goto out_delete; 86 goto out_delete;
88 87
89 self->file = file; 88 session->file = file;
90 89
91 if (perf_data_file__is_read(file)) { 90 if (perf_data_file__is_read(file)) {
92 if (perf_session__open(self) < 0) 91 if (perf_session__open(session) < 0)
93 goto out_close; 92 goto out_close;
94 93
95 perf_session__set_id_hdr_size(self); 94 perf_session__set_id_hdr_size(session);
96 } 95 }
97 } 96 }
98 97
@@ -101,22 +100,22 @@ struct perf_session *perf_session__new(struct perf_data_file *file,
101 * In O_RDONLY mode this will be performed when reading the 100 * In O_RDONLY mode this will be performed when reading the
102 * kernel MMAP event, in perf_event__process_mmap(). 101 * kernel MMAP event, in perf_event__process_mmap().
103 */ 102 */
104 if (perf_session__create_kernel_maps(self) < 0) 103 if (perf_session__create_kernel_maps(session) < 0)
105 goto out_delete; 104 goto out_delete;
106 } 105 }
107 106
108 if (tool && tool->ordering_requires_timestamps && 107 if (tool && tool->ordering_requires_timestamps &&
109 tool->ordered_samples && !perf_evlist__sample_id_all(self->evlist)) { 108 tool->ordered_samples && !perf_evlist__sample_id_all(session->evlist)) {
110 dump_printf("WARNING: No sample_id_all support, falling back to unordered processing\n"); 109 dump_printf("WARNING: No sample_id_all support, falling back to unordered processing\n");
111 tool->ordered_samples = false; 110 tool->ordered_samples = false;
112 } 111 }
113 112
114 return self; 113 return session;
115 114
116 out_close: 115 out_close:
117 perf_data_file__close(file); 116 perf_data_file__close(file);
118 out_delete: 117 out_delete:
119 perf_session__delete(self); 118 perf_session__delete(session);
120 out: 119 out:
121 return NULL; 120 return NULL;
122} 121}
@@ -147,16 +146,16 @@ static void perf_session_env__delete(struct perf_session_env *env)
147 free(env->pmu_mappings); 146 free(env->pmu_mappings);
148} 147}
149 148
150void perf_session__delete(struct perf_session *self) 149void perf_session__delete(struct perf_session *session)
151{ 150{
152 perf_session__destroy_kernel_maps(self); 151 perf_session__destroy_kernel_maps(session);
153 perf_session__delete_dead_threads(self); 152 perf_session__delete_dead_threads(session);
154 perf_session__delete_threads(self); 153 perf_session__delete_threads(session);
155 perf_session_env__delete(&self->header.env); 154 perf_session_env__delete(&session->header.env);
156 machines__exit(&self->machines); 155 machines__exit(&session->machines);
157 if (self->file) 156 if (session->file)
158 perf_data_file__close(self->file); 157 perf_data_file__close(session->file);
159 free(self); 158 free(session);
160 vdso__exit(); 159 vdso__exit();
161} 160}
162 161
@@ -1084,11 +1083,11 @@ static int perf_session__process_event(struct perf_session *session,
1084 file_offset); 1083 file_offset);
1085} 1084}
1086 1085
1087void perf_event_header__bswap(struct perf_event_header *self) 1086void perf_event_header__bswap(struct perf_event_header *hdr)
1088{ 1087{
1089 self->type = bswap_32(self->type); 1088 hdr->type = bswap_32(hdr->type);
1090 self->misc = bswap_16(self->misc); 1089 hdr->misc = bswap_16(hdr->misc);
1091 self->size = bswap_16(self->size); 1090 hdr->size = bswap_16(hdr->size);
1092} 1091}
1093 1092
1094struct thread *perf_session__findnew(struct perf_session *session, pid_t pid) 1093struct thread *perf_session__findnew(struct perf_session *session, pid_t pid)
@@ -1096,9 +1095,9 @@ struct thread *perf_session__findnew(struct perf_session *session, pid_t pid)
1096 return machine__findnew_thread(&session->machines.host, 0, pid); 1095 return machine__findnew_thread(&session->machines.host, 0, pid);
1097} 1096}
1098 1097
1099static struct thread *perf_session__register_idle_thread(struct perf_session *self) 1098static struct thread *perf_session__register_idle_thread(struct perf_session *session)
1100{ 1099{
1101 struct thread *thread = perf_session__findnew(self, 0); 1100 struct thread *thread = perf_session__findnew(session, 0);
1102 1101
1103 if (thread == NULL || thread__set_comm(thread, "swapper", 0)) { 1102 if (thread == NULL || thread__set_comm(thread, "swapper", 0)) {
1104 pr_err("problem inserting idle task.\n"); 1103 pr_err("problem inserting idle task.\n");
@@ -1150,10 +1149,10 @@ static void perf_session__warn_about_errors(const struct perf_session *session,
1150 1149
1151volatile int session_done; 1150volatile int session_done;
1152 1151
1153static int __perf_session__process_pipe_events(struct perf_session *self, 1152static int __perf_session__process_pipe_events(struct perf_session *session,
1154 struct perf_tool *tool) 1153 struct perf_tool *tool)
1155{ 1154{
1156 int fd = perf_data_file__fd(self->file); 1155 int fd = perf_data_file__fd(session->file);
1157 union perf_event *event; 1156 union perf_event *event;
1158 uint32_t size, cur_size = 0; 1157 uint32_t size, cur_size = 0;
1159 void *buf = NULL; 1158 void *buf = NULL;
@@ -1181,7 +1180,7 @@ more:
1181 goto out_err; 1180 goto out_err;
1182 } 1181 }
1183 1182
1184 if (self->header.needs_swap) 1183 if (session->header.needs_swap)
1185 perf_event_header__bswap(&event->header); 1184 perf_event_header__bswap(&event->header);
1186 1185
1187 size = event->header.size; 1186 size = event->header.size;
@@ -1216,7 +1215,7 @@ more:
1216 } 1215 }
1217 } 1216 }
1218 1217
1219 if ((skip = perf_session__process_event(self, event, tool, head)) < 0) { 1218 if ((skip = perf_session__process_event(session, event, tool, head)) < 0) {
1220 pr_err("%#" PRIx64 " [%#x]: failed to process type: %d\n", 1219 pr_err("%#" PRIx64 " [%#x]: failed to process type: %d\n",
1221 head, event->header.size, event->header.type); 1220 head, event->header.size, event->header.type);
1222 err = -EINVAL; 1221 err = -EINVAL;
@@ -1232,12 +1231,12 @@ more:
1232 goto more; 1231 goto more;
1233done: 1232done:
1234 /* do the final flush for ordered samples */ 1233 /* do the final flush for ordered samples */
1235 self->ordered_samples.next_flush = ULLONG_MAX; 1234 session->ordered_samples.next_flush = ULLONG_MAX;
1236 err = flush_sample_queue(self, tool); 1235 err = flush_sample_queue(session, tool);
1237out_err: 1236out_err:
1238 free(buf); 1237 free(buf);
1239 perf_session__warn_about_errors(self, tool); 1238 perf_session__warn_about_errors(session, tool);
1240 perf_session_free_sample_buffers(self); 1239 perf_session_free_sample_buffers(session);
1241 return err; 1240 return err;
1242} 1241}
1243 1242
@@ -1377,22 +1376,22 @@ out_err:
1377 return err; 1376 return err;
1378} 1377}
1379 1378
1380int perf_session__process_events(struct perf_session *self, 1379int perf_session__process_events(struct perf_session *session,
1381 struct perf_tool *tool) 1380 struct perf_tool *tool)
1382{ 1381{
1383 u64 size = perf_data_file__size(self->file); 1382 u64 size = perf_data_file__size(session->file);
1384 int err; 1383 int err;
1385 1384
1386 if (perf_session__register_idle_thread(self) == NULL) 1385 if (perf_session__register_idle_thread(session) == NULL)
1387 return -ENOMEM; 1386 return -ENOMEM;
1388 1387
1389 if (!perf_data_file__is_pipe(self->file)) 1388 if (!perf_data_file__is_pipe(session->file))
1390 err = __perf_session__process_events(self, 1389 err = __perf_session__process_events(session,
1391 self->header.data_offset, 1390 session->header.data_offset,
1392 self->header.data_size, 1391 session->header.data_size,
1393 size, tool); 1392 size, tool);
1394 else 1393 else
1395 err = __perf_session__process_pipe_events(self, tool); 1394 err = __perf_session__process_pipe_events(session, tool);
1396 1395
1397 return err; 1396 return err;
1398} 1397}
@@ -1441,15 +1440,15 @@ int maps__set_kallsyms_ref_reloc_sym(struct map **maps,
1441 return 0; 1440 return 0;
1442} 1441}
1443 1442
1444size_t perf_session__fprintf_dsos(struct perf_session *self, FILE *fp) 1443size_t perf_session__fprintf_dsos(struct perf_session *session, FILE *fp)
1445{ 1444{
1446 return machines__fprintf_dsos(&self->machines, fp); 1445 return machines__fprintf_dsos(&session->machines, fp);
1447} 1446}
1448 1447
1449size_t perf_session__fprintf_dsos_buildid(struct perf_session *self, FILE *fp, 1448size_t perf_session__fprintf_dsos_buildid(struct perf_session *session, FILE *fp,
1450 bool (skip)(struct dso *dso, int parm), int parm) 1449 bool (skip)(struct dso *dso, int parm), int parm)
1451{ 1450{
1452 return machines__fprintf_dsos_buildid(&self->machines, fp, skip, parm); 1451 return machines__fprintf_dsos_buildid(&session->machines, fp, skip, parm);
1453} 1452}
1454 1453
1455size_t perf_session__fprintf_nr_events(struct perf_session *session, FILE *fp) 1454size_t perf_session__fprintf_nr_events(struct perf_session *session, FILE *fp)