Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 789688fa authored by Tom Zanussi's avatar Tom Zanussi Committed by Arnaldo Carvalho de Melo
Browse files

perf/live: don't synthesize build ids at the end of a live mode trace



It doesn't really make sense to record the build ids at the end of a
live mode session - live mode samples need that information during the
trace rather than at the end.

Leave event__synthesize_build_id() in place, however; we'll still be
using that to synthesize build ids in a more timely fashion in a
future patch.

Cc: Frédéric Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Steven Rostedt <rostedt@goodmis.org>
LKML-Reference: <1272696080-16435-2-git-send-email-tzanussi@gmail.com>
Signed-off-by: default avatarTom Zanussi <tzanussi@gmail.com>
Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent fb72014d
Loading
Loading
Loading
Loading
+0 −7
Original line number Diff line number Diff line
@@ -446,13 +446,6 @@ static void atexit_header(void)

		process_buildids();
		perf_header__write(&session->header, output, true);
	} else {
		int err;

		err = event__synthesize_build_ids(process_synthesized_event,
						  session);
		if (err < 0)
			pr_err("Couldn't synthesize build ids.\n");
	}
}

+0 −61
Original line number Diff line number Diff line
@@ -1136,67 +1136,6 @@ int event__synthesize_build_id(struct dso *pos, u16 misc,
	return err;
}

static int __event_synthesize_build_ids(struct list_head *head, u16 misc,
					event__handler_t process,
					struct machine *machine,
					struct perf_session *session)
{
	struct dso *pos;

	dsos__for_each_with_build_id(pos, head) {
		int err;
		if (!pos->hit)
			continue;

		err = event__synthesize_build_id(pos, misc, process,
						 machine, session);
		if (err < 0)
			return err;
	}

	return 0;
}

int event__synthesize_build_ids(event__handler_t process,
				struct perf_session *session)
{
	int err = 0;
	u16 kmisc, umisc;
	struct machine *pos;
	struct rb_node *nd;

	if (!dsos__read_build_ids(&session->header, true))
		return 0;

	for (nd = rb_first(&session->machines); nd; nd = rb_next(nd)) {
		pos = rb_entry(nd, struct machine, rb_node);
		if (machine__is_host(pos)) {
			kmisc = PERF_RECORD_MISC_KERNEL;
			umisc = PERF_RECORD_MISC_USER;
		} else {
			kmisc = PERF_RECORD_MISC_GUEST_KERNEL;
			umisc = PERF_RECORD_MISC_GUEST_USER;
		}

		err = __event_synthesize_build_ids(&pos->kernel_dsos, kmisc,
						   process, pos, session);
		if (err == 0)
			err = __event_synthesize_build_ids(&pos->user_dsos, umisc,
							   process, pos, session);
		if (err)
			break;
	}

	if (err < 0) {
		pr_debug("failed to synthesize build ids\n");
		return err;
	}

	dsos__cache_build_ids(&session->header);

	return 0;
}

int event__process_build_id(event_t *self,
			    struct perf_session *session)
{
+0 −2
Original line number Diff line number Diff line
@@ -122,8 +122,6 @@ int event__synthesize_build_id(struct dso *pos, u16 misc,
			       event__handler_t process,
			       struct machine *machine,
			       struct perf_session *session);
int event__synthesize_build_ids(event__handler_t process,
				struct perf_session *session);
int event__process_build_id(event_t *self, struct perf_session *session);

#endif /* __PERF_HEADER_H */