perf machine: Introduce struct machines

That consolidates the grouping of host + guests, isolating a bit more of
functionality now centered on 'perf_session' that can be used
independently in tools that don't need a 'perf_session' instance, but
needs to have all the thread/map/symbol machinery.

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: Namhyung Kim <namhyung@gmail.com>
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-c700rsiphpmzv8klogojpfut@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
diff --git a/tools/perf/tests/hists_link.c b/tools/perf/tests/hists_link.c
index 0f1aae3..27860a0 100644
--- a/tools/perf/tests/hists_link.c
+++ b/tools/perf/tests/hists_link.c
@@ -75,13 +75,11 @@
 	{ "[kernel]", kernel_syms, ARRAY_SIZE(kernel_syms) },
 };
 
-static struct machine *setup_fake_machine(void)
+static struct machine *setup_fake_machine(struct machines *machines)
 {
-	struct rb_root machine_root = RB_ROOT;
-	struct machine *machine;
+	struct machine *machine = machines__find(machines, HOST_KERNEL_ID);
 	size_t i;
 
-	machine = machines__findnew(&machine_root, HOST_KERNEL_ID);
 	if (machine == NULL) {
 		pr_debug("Not enough memory for machine setup\n");
 		return NULL;
@@ -435,6 +433,7 @@
 int test__hists_link(void)
 {
 	int err = -1;
+	struct machines machines;
 	struct machine *machine = NULL;
 	struct perf_evsel *evsel, *first;
         struct perf_evlist *evlist = perf_evlist__new(NULL, NULL);
@@ -452,8 +451,10 @@
 	/* default sort order (comm,dso,sym) will be used */
 	setup_sorting(NULL, NULL);
 
+	machines__init(&machines);
+
 	/* setup threads/dso/map/symbols also */
-	machine = setup_fake_machine();
+	machine = setup_fake_machine(&machines);
 	if (!machine)
 		goto out;
 
@@ -492,11 +493,7 @@
 out:
 	/* tear down everything */
 	perf_evlist__delete(evlist);
-
-	if (machine) {
-		machine__delete_threads(machine);
-		machine__delete(machine);
-	}
+	machines__exit(&machines);
 
 	return err;
 }