lkml.org 
[lkml]   [2018]   [May]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 20/52] perf machine: Introduce machine__kernel_maps()
    Date
    From: Arnaldo Carvalho de Melo <acme@redhat.com>

    That returns the a data structure contained the ordered list of kernel
    modules + the main kernel maps, one more step in removing the
    MAP__{FUNCTION,VARIABLE} split.

    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Wang Nan <wangnan0@huawei.com>
    Link: https://lkml.kernel.org/n/tip-qsgbxfyaohc80c9ma049dubm@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    ---
    tools/perf/tests/vmlinux-kallsyms.c | 4 ++--
    tools/perf/util/event.c | 3 +--
    tools/perf/util/machine.h | 12 ++++++++++++
    tools/perf/util/probe-event.c | 3 +--
    4 files changed, 16 insertions(+), 6 deletions(-)

    diff --git a/tools/perf/tests/vmlinux-kallsyms.c b/tools/perf/tests/vmlinux-kallsyms.c
    index d80416e07f4b..9bb84fe365e2 100644
    --- a/tools/perf/tests/vmlinux-kallsyms.c
    +++ b/tools/perf/tests/vmlinux-kallsyms.c
    @@ -20,7 +20,7 @@ int test__vmlinux_matches_kallsyms(struct test *test __maybe_unused, int subtest
    struct map *kallsyms_map, *vmlinux_map, *map;
    struct machine kallsyms, vmlinux;
    enum map_type type = MAP__FUNCTION;
    - struct maps *maps = &vmlinux.kmaps.maps[type];
    + struct maps *maps = machine__kernel_maps(&vmlinux);
    u64 mem_start, mem_end;
    bool header_printed;

    @@ -228,7 +228,7 @@ int test__vmlinux_matches_kallsyms(struct test *test __maybe_unused, int subtest

    header_printed = false;

    - maps = &kallsyms.kmaps.maps[type];
    + maps = machine__kernel_maps(&kallsyms);

    for (map = maps__first(maps); map; map = map__next(map)) {
    if (!map->priv) {
    diff --git a/tools/perf/util/event.c b/tools/perf/util/event.c
    index 9d94c59046d1..542bd5b79e48 100644
    --- a/tools/perf/util/event.c
    +++ b/tools/perf/util/event.c
    @@ -464,8 +464,7 @@ int perf_event__synthesize_modules(struct perf_tool *tool,
    {
    int rc = 0;
    struct map *pos;
    - struct map_groups *kmaps = &machine->kmaps;
    - struct maps *maps = &kmaps->maps[MAP__FUNCTION];
    + struct maps *maps = machine__kernel_maps(machine);
    union perf_event *event = zalloc((sizeof(event->mmap) +
    machine->id_hdr_size));
    if (event == NULL) {
    diff --git a/tools/perf/util/machine.h b/tools/perf/util/machine.h
    index 66cc200ef86f..92303ac718a6 100644
    --- a/tools/perf/util/machine.h
    +++ b/tools/perf/util/machine.h
    @@ -70,12 +70,24 @@ struct map *__machine__kernel_map(struct machine *machine, enum map_type type)
    return machine->vmlinux_maps[type];
    }

    +/*
    + * The main kernel (vmlinux) map
    + */
    static inline
    struct map *machine__kernel_map(struct machine *machine)
    {
    return __machine__kernel_map(machine, MAP__FUNCTION);
    }

    +/*
    + * kernel (the one returned by machine__kernel_map()) plus kernel modules maps
    + */
    +static inline
    +struct maps *machine__kernel_maps(struct machine *machine)
    +{
    + return &machine->kmaps.maps[MAP__FUNCTION];
    +}
    +
    int machine__get_kernel_start(struct machine *machine);

    static inline u64 machine__kernel_start(struct machine *machine)
    diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c
    index d5e2516d5981..50139764c6d7 100644
    --- a/tools/perf/util/probe-event.c
    +++ b/tools/perf/util/probe-event.c
    @@ -161,8 +161,7 @@ static int kernel_get_symbol_address_by_name(const char *name, u64 *addr,

    static struct map *kernel_get_module_map(const char *module)
    {
    - struct map_groups *grp = &host_machine->kmaps;
    - struct maps *maps = &grp->maps[MAP__FUNCTION];
    + struct maps *maps = machine__kernel_maps(host_machine);
    struct map *pos;

    /* A file path -- this is an offline module */
    --
    2.14.3
    \
     
     \ /
      Last update: 2018-05-02 17:21    [W:2.600 / U:0.036 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site