diff options
| author | Blake Jones <blakejones@google.com> | 2025-06-12 22:49:38 +0300 | 
|---|---|---|
| committer | Namhyung Kim <namhyung@kernel.org> | 2025-06-21 00:48:56 +0300 | 
| commit | f19860ea9477f5ac33775cc0a602c7d54188c00a (patch) | |
| tree | d2634d7db621476741de19057134d2ac9c3bbd9e /tools/perf/builtin-script.c | |
| parent | fdc3441f2d317b40ace0936ee040a6c895d60014 (diff) | |
| download | linux-f19860ea9477f5ac33775cc0a602c7d54188c00a.tar.xz | |
perf tools: display the new PERF_RECORD_BPF_METADATA event
Here's some example "perf script -D" output for the new event type. The
": unhandled!" message is from tool.c, analogous to other behavior there.
I've elided some rows with all NUL characters for brevity, and I wrapped
one of the >75-column lines to fit in the commit guidelines.
0x50fc8@perf.data [0x260]: event: 84
.
. ... raw event: size 608 bytes
.  0000:  54 00 00 00 00 00 60 02 62 70 66 5f 70 72 6f 67  T.....`.bpf_prog
.  0010:  5f 31 65 30 61 32 65 33 36 36 65 35 36 66 31 61  _1e0a2e366e56f1a
.  0020:  32 5f 70 65 72 66 5f 73 61 6d 70 6c 65 5f 66 69  2_perf_sample_fi
.  0030:  6c 74 65 72 00 00 00 00 00 00 00 00 00 00 00 00  lter............
.  0040:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
[...]
.  0110:  74 65 73 74 5f 76 61 6c 75 65 00 00 00 00 00 00  test_value......
.  0120:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
[...]
.  0150:  34 32 00 00 00 00 00 00 00 00 00 00 00 00 00 00  42..............
.  0160:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
[...]
0 0x50fc8 [0x260]: PERF_RECORD_BPF_METADATA \
      prog bpf_prog_1e0a2e366e56f1a2_perf_sample_filter
  entry 0:           test_value = 42
: unhandled!
Signed-off-by: Blake Jones <blakejones@google.com>
Link: https://lore.kernel.org/r/20250612194939.162730-5-blakejones@google.com
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Diffstat (limited to 'tools/perf/builtin-script.c')
| -rw-r--r-- | tools/perf/builtin-script.c | 15 | 
1 files changed, 13 insertions, 2 deletions
| diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c index 6c3bf74dd78c..4001e621b6cb 100644 --- a/tools/perf/builtin-script.c +++ b/tools/perf/builtin-script.c @@ -38,6 +38,7 @@  #include "print_insn.h"  #include "archinsn.h"  #include <linux/bitmap.h> +#include <linux/compiler.h>  #include <linux/kernel.h>  #include <linux/stringify.h>  #include <linux/time64.h> @@ -50,6 +51,7 @@  #include <errno.h>  #include <inttypes.h>  #include <signal.h> +#include <stdio.h>  #include <sys/param.h>  #include <sys/types.h>  #include <sys/stat.h> @@ -2755,6 +2757,14 @@ process_bpf_events(const struct perf_tool *tool __maybe_unused,  			   sample->tid);  } +static int +process_bpf_metadata_event(struct perf_session *session __maybe_unused, +			   union perf_event *event) +{ +	perf_event__fprintf(event, NULL, stdout); +	return 0; +} +  static int process_text_poke_events(const struct perf_tool *tool,  				    union perf_event *event,  				    struct perf_sample *sample, @@ -2877,8 +2887,9 @@ static int __cmd_script(struct perf_script *script)  		script->tool.finished_round = process_finished_round_event;  	}  	if (script->show_bpf_events) { -		script->tool.ksymbol = process_bpf_events; -		script->tool.bpf     = process_bpf_events; +		script->tool.ksymbol	  = process_bpf_events; +		script->tool.bpf	  = process_bpf_events; +		script->tool.bpf_metadata = process_bpf_metadata_event;  	}  	if (script->show_text_poke_events) {  		script->tool.ksymbol   = process_bpf_events; | 
