perf tools: Set thread->mg.machine in all places
tip-bot for Arnaldo Carvalho de Melo
merge botCommit-ID: 11246c708acdfa9512d7b69c18938810c20fd6ab Gitweb: http://git.kernel.org/tip/11246c708acdfa9512d7b69c18938810c20fd6ab Author: Arnaldo Carvalho de Melo <[email protected]> AuthorDate: Tue, 21 Oct 2014 17:29:02 -0300 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Wed, 29 Oct 2014 10:32:46 -0200
perf tools: Set thread->mg.machine in all places
We were setting this only in machine__init(), i.e. for the map_groups that holds the kernel module maps, not for the one used for a thread's executable mmaps.
Now we are sure that we can obtain the machine where a thread is by going via thread->mg->machine, thus we can, in the following patch, make all codepaths that receive machine _and_ thread, drop the machine one.
Cc Adrian Hunter <[email protected]>
Cc Borislav Petkov <[email protected]>
Cc David Ahern <[email protected]>
Cc Don Zickus <[email protected]>
Cc Frederic Weisbecker <[email protected]>
Cc Jean Pihet <[email protected]>
Cc Jiri Olsa <[email protected]>
Cc Mike Galbraith <[email protected]>
Cc Namhyung Kim <[email protected]>
Cc Paul Mackerras <[email protected]>
Cc Peter Zijlstra <[email protected]>
Cc Stephane Eranian <[email protected]>
Signed-off-by Arnaldo Carvalho de Melo <[email protected]>
--- tools/perf/util/machine.c | 5 ++--- tools/perf/util/map.c | 8 ++++---- tools/perf/util/map.h | 4 ++-- tools/perf/util/thread.c | 2 +- 4 files changed, 9 insertions(+), 10 deletions(-)
tools/perf/util/machine.c +2 -3
@@ -21,7 +21,7 @@ static void dsos__init(struct dsos *dsos)int machine__init (struct machine *machine,const char *root_dir,pid_t pid) { -map_groups__init (&machine->kmaps); +map_groups__init (&machine->kmaps, machine);RB_CLEAR_NODE (&machine->rb_node);dsos__init (&machine->user_dsos);dsos__init (&machine->kernel_dsos);
@@ -32,7 +32,6 @@ int machine__init(struct machine *machine, const char *root_dir, pid_t pid) machine->vdso_info =NULL ; - machine->kmaps.machine = machine; machine->pid = pid; machine->symbol_filter =NULL ;
@@ -319,7 +318,7 @@ static void machine__update_thread_pid(struct machine *machine, goto out_err;if (!leader->mg) - leader->mg =map_groups__new (); + leader->mg =map_groups__new (machine);if (!leader->mg) goto out_err;
tools/perf/util/map.c +4 -4
@@ -413,14 +413,14 @@ u64 map__objdump_2mem(struct map *map, u64 ip)return ip + map->reloc; } -void map_groups__init (struct map_groups *mg) +void map_groups__init (struct map_groups *mg,struct machine *machine) {int i;for (i =0 ; i <MAP__NR_TYPES ; ++i) { mg->maps[i] =RB_ROOT ;INIT_LIST_HEAD (&mg->removed_maps[i]); } - mg->machine =NULL ; + mg->machine = machine; mg->refcnt =1 ; }
@@ -471,12 +471,12 @@ bool map_groups__empty(struct map_groups *mg)return true; } -struct map_groups *map_groups__new (void ) +struct map_groups *map_groups__new (struct machine *machine) {struct map_groups *mg =malloc (sizeof (*mg));if (mg !=NULL ) -map_groups__init (mg); +map_groups__init (mg, machine);return mg; }
tools/perf/util/map.h +2 -2
@@ -64,7 +64,7 @@ struct map_groups {int refcnt; }; -struct map_groups *map_groups__new (void ); +struct map_groups *map_groups__new (struct machine *machine);void map_groups__delete (struct map_groups *mg);bool map_groups__empty (struct map_groups *mg);
@@ -150,7 +150,7 @@ void maps__remove(struct rb_root *maps, struct map *map);struct map *maps__find (struct rb_root *maps,u64 addr);struct map *maps__first (struct rb_root *maps);struct map *maps__next (struct map *map); -void map_groups__init (struct map_groups *mg); +void map_groups__init (struct map_groups *mg,struct machine *machine);void map_groups__exit (struct map_groups *mg);int map_groups__clone (struct map_groups *mg,struct map_groups *parent,enum map_type type);
tools/perf/util/thread.c +1 -1
@@ -15,7 +15,7 @@ int thread__init_map_groups(struct thread *thread, struct machine *machine)pid_t pid = thread->pid_;if (pid == thread->tid || pid ==-1 ) { - thread->mg =map_groups__new (); + thread->mg =map_groups__new (machine); }else { leader =machine__findnew_thread (machine, pid, pid);if (leader)