aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/util/header.c
diff options
context:
space:
mode:
authorArnaldo Carvalho de Melo <acme@redhat.com>2011-11-28 04:56:39 -0500
committerArnaldo Carvalho de Melo <acme@redhat.com>2011-11-28 07:39:12 -0500
commit743eb868657bdb1b26c7b24077ca21c67c82c777 (patch)
tree4803b557725213043ccd5d3f83d2eec796a49f69 /tools/perf/util/header.c
parentd20deb64e0490ee9442b5181bc08a62d2cadcb90 (diff)
perf tools: Resolve machine earlier and pass it to perf_event_ops
Reducing the exposure of perf_session further, so that we can use the classes in cases where no perf.data file is created. Cc: David Ahern <dsahern@gmail.com> Cc: Frederic Weisbecker <fweisbec@gmail.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-stua66dcscsezzrcdugvbmvd@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/util/header.c')
-rw-r--r--tools/perf/util/header.c28
1 files changed, 12 insertions, 16 deletions
diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c
index ab3a2b0e8f06..db280d6ca898 100644
--- a/tools/perf/util/header.c
+++ b/tools/perf/util/header.c
@@ -2072,8 +2072,7 @@ out_delete_evlist:
2072 2072
2073int perf_event__synthesize_attr(struct perf_event_ops *ops, 2073int perf_event__synthesize_attr(struct perf_event_ops *ops,
2074 struct perf_event_attr *attr, u16 ids, u64 *id, 2074 struct perf_event_attr *attr, u16 ids, u64 *id,
2075 perf_event__handler_t process, 2075 perf_event__handler_t process)
2076 struct perf_session *session)
2077{ 2076{
2078 union perf_event *ev; 2077 union perf_event *ev;
2079 size_t size; 2078 size_t size;
@@ -2095,7 +2094,7 @@ int perf_event__synthesize_attr(struct perf_event_ops *ops,
2095 ev->attr.header.type = PERF_RECORD_HEADER_ATTR; 2094 ev->attr.header.type = PERF_RECORD_HEADER_ATTR;
2096 ev->attr.header.size = size; 2095 ev->attr.header.size = size;
2097 2096
2098 err = process(ops, ev, NULL, session); 2097 err = process(ops, ev, NULL, NULL);
2099 2098
2100 free(ev); 2099 free(ev);
2101 2100
@@ -2111,7 +2110,7 @@ int perf_event__synthesize_attrs(struct perf_event_ops *ops,
2111 2110
2112 list_for_each_entry(attr, &session->evlist->entries, node) { 2111 list_for_each_entry(attr, &session->evlist->entries, node) {
2113 err = perf_event__synthesize_attr(ops, &attr->attr, attr->ids, 2112 err = perf_event__synthesize_attr(ops, &attr->attr, attr->ids,
2114 attr->id, process, session); 2113 attr->id, process);
2115 if (err) { 2114 if (err) {
2116 pr_debug("failed to create perf header attribute\n"); 2115 pr_debug("failed to create perf header attribute\n");
2117 return err; 2116 return err;
@@ -2161,7 +2160,7 @@ int perf_event__process_attr(union perf_event *event,
2161int perf_event__synthesize_event_type(struct perf_event_ops *ops, 2160int perf_event__synthesize_event_type(struct perf_event_ops *ops,
2162 u64 event_id, char *name, 2161 u64 event_id, char *name,
2163 perf_event__handler_t process, 2162 perf_event__handler_t process,
2164 struct perf_session *session) 2163 struct machine *machine)
2165{ 2164{
2166 union perf_event ev; 2165 union perf_event ev;
2167 size_t size = 0; 2166 size_t size = 0;
@@ -2179,14 +2178,14 @@ int perf_event__synthesize_event_type(struct perf_event_ops *ops,
2179 ev.event_type.header.size = sizeof(ev.event_type) - 2178 ev.event_type.header.size = sizeof(ev.event_type) -
2180 (sizeof(ev.event_type.event_type.name) - size); 2179 (sizeof(ev.event_type.event_type.name) - size);
2181 2180
2182 err = process(ops, &ev, NULL, session); 2181 err = process(ops, &ev, NULL, machine);
2183 2182
2184 return err; 2183 return err;
2185} 2184}
2186 2185
2187int perf_event__synthesize_event_types(struct perf_event_ops *ops, 2186int perf_event__synthesize_event_types(struct perf_event_ops *ops,
2188 perf_event__handler_t process, 2187 perf_event__handler_t process,
2189 struct perf_session *session) 2188 struct machine *machine)
2190{ 2189{
2191 struct perf_trace_event_type *type; 2190 struct perf_trace_event_type *type;
2192 int i, err = 0; 2191 int i, err = 0;
@@ -2196,7 +2195,7 @@ int perf_event__synthesize_event_types(struct perf_event_ops *ops,
2196 2195
2197 err = perf_event__synthesize_event_type(ops, type->event_id, 2196 err = perf_event__synthesize_event_type(ops, type->event_id,
2198 type->name, process, 2197 type->name, process,
2199 session); 2198 machine);
2200 if (err) { 2199 if (err) {
2201 pr_debug("failed to create perf header event type\n"); 2200 pr_debug("failed to create perf header event type\n");
2202 return err; 2201 return err;
@@ -2207,8 +2206,7 @@ int perf_event__synthesize_event_types(struct perf_event_ops *ops,
2207} 2206}
2208 2207
2209int perf_event__process_event_type(struct perf_event_ops *ops __unused, 2208int perf_event__process_event_type(struct perf_event_ops *ops __unused,
2210 union perf_event *event, 2209 union perf_event *event)
2211 struct perf_session *session __unused)
2212{ 2210{
2213 if (perf_header__push_event(event->event_type.event_type.event_id, 2211 if (perf_header__push_event(event->event_type.event_type.event_id,
2214 event->event_type.event_type.name) < 0) 2212 event->event_type.event_type.name) < 0)
@@ -2219,8 +2217,7 @@ int perf_event__process_event_type(struct perf_event_ops *ops __unused,
2219 2217
2220int perf_event__synthesize_tracing_data(struct perf_event_ops *ops, int fd, 2218int perf_event__synthesize_tracing_data(struct perf_event_ops *ops, int fd,
2221 struct perf_evlist *evlist, 2219 struct perf_evlist *evlist,
2222 perf_event__handler_t process, 2220 perf_event__handler_t process)
2223 struct perf_session *session __unused)
2224{ 2221{
2225 union perf_event ev; 2222 union perf_event ev;
2226 struct tracing_data *tdata; 2223 struct tracing_data *tdata;
@@ -2251,7 +2248,7 @@ int perf_event__synthesize_tracing_data(struct perf_event_ops *ops, int fd,
2251 ev.tracing_data.header.size = sizeof(ev.tracing_data); 2248 ev.tracing_data.header.size = sizeof(ev.tracing_data);
2252 ev.tracing_data.size = aligned_size; 2249 ev.tracing_data.size = aligned_size;
2253 2250
2254 process(ops, &ev, NULL, session); 2251 process(ops, &ev, NULL, NULL);
2255 2252
2256 /* 2253 /*
2257 * The put function will copy all the tracing data 2254 * The put function will copy all the tracing data
@@ -2296,8 +2293,7 @@ int perf_event__process_tracing_data(union perf_event *event,
2296int perf_event__synthesize_build_id(struct perf_event_ops *ops, 2293int perf_event__synthesize_build_id(struct perf_event_ops *ops,
2297 struct dso *pos, u16 misc, 2294 struct dso *pos, u16 misc,
2298 perf_event__handler_t process, 2295 perf_event__handler_t process,
2299 struct machine *machine, 2296 struct machine *machine)
2300 struct perf_session *session)
2301{ 2297{
2302 union perf_event ev; 2298 union perf_event ev;
2303 size_t len; 2299 size_t len;
@@ -2317,7 +2313,7 @@ int perf_event__synthesize_build_id(struct perf_event_ops *ops,
2317 ev.build_id.header.size = sizeof(ev.build_id) + len; 2313 ev.build_id.header.size = sizeof(ev.build_id) + len;
2318 memcpy(&ev.build_id.filename, pos->long_name, pos->long_name_len); 2314 memcpy(&ev.build_id.filename, pos->long_name, pos->long_name_len);
2319 2315
2320 err = process(ops, &ev, NULL, session); 2316 err = process(ops, &ev, NULL, machine);
2321 2317
2322 return err; 2318 return err;
2323} 2319}