• Arnaldo Carvalho de Melo's avatar
    perf trace: Add BPF handler for unaugmented syscalls · 5834da7f
    Arnaldo Carvalho de Melo authored
    Will be used to assign to syscalls that don't need augmentation, i.e.
    those with just integer args.
    
    All syscalls will be in a BPF_MAP_TYPE_PROG_ARRAY, and the
    bpf_tail_call() keyed by the syscall id will either find nothing in
    place, which means the syscall is being filtered, or a function that
    will either add things like filenames to the ring buffer, right after
    the raw syscall args, or be this unaugmented handler that will just
    return 1, meaning don't filter the original
    raw_syscalls:sys_{enter,exit} tracepoint.
    
    For now it is not really being used, this is just leg work to break the
    patch into smaller pieces.
    
    It introduces a trace__find_bpf_program_by_title() helper that in turn
    uses libbpf's bpf_object__find_program_by_title() on the BPF object with
    the __augmented_syscalls__ map. "title" is how libbpf calls the SEC()
    argument for functions, i.e. the ELF section that follows a convention
    to specify what BPF program (a function with this SEC() marking) should
    be connected to which tracepoint, kprobes, etc.
    
    In perf anything that is of the form SEC("sys:event_name") will be
    connected to that tracepoint by perf's BPF loader.
    
    In this case its something that will be bpf_tail_call()ed from either
    the "raw_syscalls:sys_enter" or "raw_syscall:sys_exit" tracepoints, so
    its named "!raw_syscalls:unaugmented" to convey that idea, i.e. its not
    going to be directly attached to a tracepoint, thus it starts with a
    "!".
    
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Luis Cláudio Gonçalves <lclaudio@redhat.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Link: https://lkml.kernel.org/n/tip-meucpjx2u0slpkayx56lxqq6@git.kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    5834da7f
augmented_raw_syscalls.c 8 KB