Em Wed, Nov 25, 2015 at 05:32:45PM +0100, Ekaterina Tumanova escreveu: > Refactor vmlinux_path_init function to ease subsequent additions of > new vmlinux locations. > > Signed-off-by: Ekaterina Tumanova <tuman...@linux.vnet.ibm.com> > Acked-by: Alexander Yarygin <yary...@linux.vnet.ibm.com> > --- > tools/perf/util/symbol.c | 64 > +++++++++++++++++++++++++----------------------- > 1 file changed, 33 insertions(+), 31 deletions(-) > > diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c > index cd08027..9335088 100644 > --- a/tools/perf/util/symbol.c > +++ b/tools/perf/util/symbol.c > @@ -1860,24 +1860,43 @@ static void vmlinux_path__exit(void) > zfree(&vmlinux_path); > } > > +static const char * const vmlinux_paths[] = { > + "vmlinux", > + "/boot/vmlinux" > +}; > + > +static const char * const vmlinux_paths_upd[] = { > + "/boot/vmlinux-%s", > + "/usr/lib/debug/boot/vmlinux-%s", > + "/lib/modules/%s/build/vmlinux", > + "/usr/lib/debug/lib/modules/%s/vmlinux" > +}; > + > +static int vmlinux_path__update(const char *new_entry)
Changing this to vmlinux_path__add(). > +{ > + vmlinux_path[vmlinux_path__nr_entries] = strdup(new_entry); > + if (vmlinux_path[vmlinux_path__nr_entries] == NULL) > + return -1; > + ++vmlinux_path__nr_entries; > + > + return 0; > +} > + > static int vmlinux_path__init(struct perf_env *env) > { > struct utsname uts; > char bf[PATH_MAX]; > char *kernel_version; > + unsigned int i; > > - vmlinux_path = malloc(sizeof(char *) * 6); > + vmlinux_path = malloc(sizeof(char *) * (ARRAY_SIZE(vmlinux_paths) + > + ARRAY_SIZE(vmlinux_paths_upd))); > if (vmlinux_path == NULL) > return -1; > > - vmlinux_path[vmlinux_path__nr_entries] = strdup("vmlinux"); > - if (vmlinux_path[vmlinux_path__nr_entries] == NULL) > - goto out_fail; > - ++vmlinux_path__nr_entries; > - vmlinux_path[vmlinux_path__nr_entries] = strdup("/boot/vmlinux"); > - if (vmlinux_path[vmlinux_path__nr_entries] == NULL) > - goto out_fail; > - ++vmlinux_path__nr_entries; > + for (i = 0; i < ARRAY_SIZE(vmlinux_paths); i++) > + if (vmlinux_path__update(vmlinux_paths[i]) < 0) > + goto out_fail; > > /* only try kernel version if no symfs was given */ > if (symbol_conf.symfs[0] != 0) > @@ -1892,28 +1911,11 @@ static int vmlinux_path__init(struct perf_env *env) > kernel_version = uts.release; > } > > - snprintf(bf, sizeof(bf), "/boot/vmlinux-%s", kernel_version); > - vmlinux_path[vmlinux_path__nr_entries] = strdup(bf); > - if (vmlinux_path[vmlinux_path__nr_entries] == NULL) > - goto out_fail; > - ++vmlinux_path__nr_entries; > - snprintf(bf, sizeof(bf), "/usr/lib/debug/boot/vmlinux-%s", > - kernel_version); > - vmlinux_path[vmlinux_path__nr_entries] = strdup(bf); > - if (vmlinux_path[vmlinux_path__nr_entries] == NULL) > - goto out_fail; > - ++vmlinux_path__nr_entries; > - snprintf(bf, sizeof(bf), "/lib/modules/%s/build/vmlinux", > kernel_version); > - vmlinux_path[vmlinux_path__nr_entries] = strdup(bf); > - if (vmlinux_path[vmlinux_path__nr_entries] == NULL) > - goto out_fail; > - ++vmlinux_path__nr_entries; > - snprintf(bf, sizeof(bf), "/usr/lib/debug/lib/modules/%s/vmlinux", > - kernel_version); > - vmlinux_path[vmlinux_path__nr_entries] = strdup(bf); > - if (vmlinux_path[vmlinux_path__nr_entries] == NULL) > - goto out_fail; > - ++vmlinux_path__nr_entries; > + for (i = 0; i < ARRAY_SIZE(vmlinux_paths_upd); i++) { > + snprintf(bf, sizeof(bf), vmlinux_paths_upd[i], kernel_version); > + if (vmlinux_path__update(bf) < 0) > + goto out_fail; > + } > > return 0; > > -- > 2.3.9 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/