lkml.org 
[lkml]   [2015]   [Jun]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[RFC PATCH v10 43/50] perf tools: Add BPF_PROLOGUE config options for further patches
    Date
    If both LIBBPF and DWARF is detected, it is possible to create prologue
    for eBPF programs to help them accessing kernel data. HAVE_BPF_PROLOGUE
    and CONFIG_BPF_PROLOGUE is added as flags for this feature.

    PERF_HAVE_ARCH_GET_REG_OFFSET indicates an architecture supports
    converting name of a register to its offset in 'struct pt_regs'.
    Without this support, BPF_PROLOGUE should be turned off.

    Signed-off-by: Wang Nan <wangnan0@huawei.com>
    ---
    tools/perf/config/Makefile | 12 ++++++++++++
    tools/perf/util/include/dwarf-regs.h | 7 +++++++
    2 files changed, 19 insertions(+)

    diff --git a/tools/perf/config/Makefile b/tools/perf/config/Makefile
    index 1b387ec..808c158 100644
    --- a/tools/perf/config/Makefile
    +++ b/tools/perf/config/Makefile
    @@ -310,6 +310,18 @@ ifndef NO_LIBELF
    CFLAGS += -DHAVE_LIBBPF_SUPPORT
    $(call detected,CONFIG_LIBBPF)
    endif
    +
    + ifndef NO_DWARF
    + ifneq ($(origin PERF_HAVE_ARCH_GET_REG_INFO), undefined)
    + CFLAGS += -DHAVE_BPF_PROLOGUE
    + $(call detected,CONFIG_BPF_PROLOGUE)
    + else
    + msg := $(warning BPF prologue is not supported by architecture $(ARCH));
    + endif
    + else
    + msg := $(warning DWARF support is off, BPF prologue is disabled);
    + endif
    +
    endif # NO_LIBBPF
    endif # NO_LIBELF

    diff --git a/tools/perf/util/include/dwarf-regs.h b/tools/perf/util/include/dwarf-regs.h
    index 8f14965..3dda083 100644
    --- a/tools/perf/util/include/dwarf-regs.h
    +++ b/tools/perf/util/include/dwarf-regs.h
    @@ -5,4 +5,11 @@
    const char *get_arch_regstr(unsigned int n);
    #endif

    +#ifdef HAVE_BPF_PROLOGUE
    +/*
    + * Arch should support fetching the offset of a register in pt_regs
    + * by its name.
    + */
    +int arch_get_reg_info(const char *name, int *offset);
    +#endif
    #endif
    --
    1.8.3.4


    \
     
     \ /
      Last update: 2015-07-01 04:41    [W:2.681 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site