|
@@ -200,6 +200,47 @@ static int write_buildid(const char *name, size_t name_len, u8 *build_id,
|
|
|
return write_padded(fd, name, name_len + 1, len);
|
|
|
}
|
|
|
|
|
|
+static int __dsos__hit_all(struct list_head *head)
|
|
|
+{
|
|
|
+ struct dso *pos;
|
|
|
+
|
|
|
+ list_for_each_entry(pos, head, node)
|
|
|
+ pos->hit = true;
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+static int machine__hit_all_dsos(struct machine *machine)
|
|
|
+{
|
|
|
+ int err;
|
|
|
+
|
|
|
+ err = __dsos__hit_all(&machine->kernel_dsos);
|
|
|
+ if (err)
|
|
|
+ return err;
|
|
|
+
|
|
|
+ return __dsos__hit_all(&machine->user_dsos);
|
|
|
+}
|
|
|
+
|
|
|
+int dsos__hit_all(struct perf_session *session)
|
|
|
+{
|
|
|
+ struct rb_node *nd;
|
|
|
+ int err;
|
|
|
+
|
|
|
+ err = machine__hit_all_dsos(&session->machines.host);
|
|
|
+ if (err)
|
|
|
+ return err;
|
|
|
+
|
|
|
+ for (nd = rb_first(&session->machines.guests); nd; nd = rb_next(nd)) {
|
|
|
+ struct machine *pos = rb_entry(nd, struct machine, rb_node);
|
|
|
+
|
|
|
+ err = machine__hit_all_dsos(pos);
|
|
|
+ if (err)
|
|
|
+ return err;
|
|
|
+ }
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
static int __dsos__write_buildid_table(struct list_head *head,
|
|
|
struct machine *machine,
|
|
|
pid_t pid, u16 misc, int fd)
|