• Howard Chu's avatar
    perf trace: BTF-based enum pretty printing for syscall args · 45a0c928
    Howard Chu authored
    In this patch, BTF is used to turn enum value to the corresponding
    name. There is only one system call that uses enum value as its
    argument, that is `landlock_add_rule()`.
    
    The vmlinux btf is loaded lazily, when user decided to trace the
    `landlock_add_rule` syscall. But if one decide to run `perf trace`
    without any arguments, the behaviour is to trace `landlock_add_rule`,
    so vmlinux btf will be loaded by default.
    
    The laziest behaviour is to load vmlinux btf when a
    `landlock_add_rule` syscall hits. But I think you could lose some
    samples when loading vmlinux btf at run time, for it can delay the
    handling of other samples. I might need your precious opinions on
    this...
    
    before:
    
    ```
    perf $ ./perf trace -e landlock_add_rule
         0.000 ( 0.008 ms): ldlck-test/438194 landlock_add_rule(rule_type: 2) = -1 EBADFD (File descriptor in bad state)
         0.010 ( 0.001 ms): ldlck-test/438194 landlock_add_rule(rule_type: 1) = -1 EBADFD (File descriptor in bad state)
    ```
    
    after:
    
    ```
    perf $ ./perf trace -e landlock_add_rule
         0.000 ( 0.029 ms): ldlck-test/438194 landlock_add_rule(rule_type: LANDLOCK_RULE_NET_PORT)     = -1 EBADFD (File descriptor in bad state)
         0.036 ( 0.004 ms): ldlck-test/438194 landlock_add_rule(rule_type: LANDLOCK_RULE_PATH_BENEATH) = -1 EBADFD (File descriptor in bad state)
    ```
    
    Committer notes:
    
    Made it build with NO_LIBBPF=1, simplified btf_enum_fprintf(), see [1]
    for the discussion.
    Signed-off-by: default avatarHoward Chu <howardchu95@gmail.com>
    Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Günther Noack <gnoack@google.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Mickaël Salaün <mic@digikod.net>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: https://lore.kernel.org/lkml/20240613022757.3589783-1-howardchu95@gmail.com
    Link: https://lore.kernel.org/lkml/ZnXAhFflUl_LV1QY@x1 # [1]
    Link: https://lore.kernel.org/r/20240624181345.124764-3-howardchu95@gmail.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    45a0c928
builtin-trace.c 148 KB