diff options
author | Jakub Kicinski <jakub.kicinski@netronome.com> | 2018-05-03 21:37:16 -0400 |
---|---|---|
committer | Daniel Borkmann <daniel@iogearbox.net> | 2018-05-04 17:41:04 -0400 |
commit | f412eed9dfdeeb6becd7de2ffe8b5d0a8b3f81ca (patch) | |
tree | c6cf7b305e343a73505d5d1d25ee300a46992147 /tools/bpf/bpftool/bash-completion | |
parent | e64d52569f6e847495091db40ab58d2d379748ef (diff) |
tools: bpftool: add simple perf event output reader
Users of BPF sooner or later discover perf_event_output() helpers
and BPF_MAP_TYPE_PERF_EVENT_ARRAY. Dumping this array type is
not possible, however, we can add simple reading of perf events.
Create a new event_pipe subcommand for maps, this sub command
will only work with BPF_MAP_TYPE_PERF_EVENT_ARRAY maps.
Parts of the code from samples/bpf/trace_output_user.c.
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Reviewed-by: Quentin Monnet <quentin.monnet@netronome.com>
Acked-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Diffstat (limited to 'tools/bpf/bpftool/bash-completion')
-rw-r--r-- | tools/bpf/bpftool/bash-completion/bpftool | 36 |
1 files changed, 34 insertions, 2 deletions
diff --git a/tools/bpf/bpftool/bash-completion/bpftool b/tools/bpf/bpftool/bash-completion/bpftool index 852d84a98acd..b301c9b315f1 100644 --- a/tools/bpf/bpftool/bash-completion/bpftool +++ b/tools/bpf/bpftool/bash-completion/bpftool | |||
@@ -1,6 +1,6 @@ | |||
1 | # bpftool(8) bash completion -*- shell-script -*- | 1 | # bpftool(8) bash completion -*- shell-script -*- |
2 | # | 2 | # |
3 | # Copyright (C) 2017 Netronome Systems, Inc. | 3 | # Copyright (C) 2017-2018 Netronome Systems, Inc. |
4 | # | 4 | # |
5 | # This software is dual licensed under the GNU General License | 5 | # This software is dual licensed under the GNU General License |
6 | # Version 2, June 1991 as shown in the file COPYING in the top-level | 6 | # Version 2, June 1991 as shown in the file COPYING in the top-level |
@@ -79,6 +79,14 @@ _bpftool_get_map_ids() | |||
79 | command sed -n 's/.*"id": \(.*\),$/\1/p' )" -- "$cur" ) ) | 79 | command sed -n 's/.*"id": \(.*\),$/\1/p' )" -- "$cur" ) ) |
80 | } | 80 | } |
81 | 81 | ||
82 | _bpftool_get_perf_map_ids() | ||
83 | { | ||
84 | COMPREPLY+=( $( compgen -W "$( bpftool -jp map 2>&1 | \ | ||
85 | command grep -C2 perf_event_array | \ | ||
86 | command sed -n 's/.*"id": \(.*\),$/\1/p' )" -- "$cur" ) ) | ||
87 | } | ||
88 | |||
89 | |||
82 | _bpftool_get_prog_ids() | 90 | _bpftool_get_prog_ids() |
83 | { | 91 | { |
84 | COMPREPLY+=( $( compgen -W "$( bpftool -jp prog 2>&1 | \ | 92 | COMPREPLY+=( $( compgen -W "$( bpftool -jp prog 2>&1 | \ |
@@ -359,10 +367,34 @@ _bpftool() | |||
359 | fi | 367 | fi |
360 | return 0 | 368 | return 0 |
361 | ;; | 369 | ;; |
370 | event_pipe) | ||
371 | case $prev in | ||
372 | $command) | ||
373 | COMPREPLY=( $( compgen -W "$MAP_TYPE" -- "$cur" ) ) | ||
374 | return 0 | ||
375 | ;; | ||
376 | id) | ||
377 | _bpftool_get_perf_map_ids | ||
378 | return 0 | ||
379 | ;; | ||
380 | cpu) | ||
381 | return 0 | ||
382 | ;; | ||
383 | index) | ||
384 | return 0 | ||
385 | ;; | ||
386 | *) | ||
387 | _bpftool_once_attr 'cpu' | ||
388 | _bpftool_once_attr 'index' | ||
389 | return 0 | ||
390 | ;; | ||
391 | esac | ||
392 | ;; | ||
362 | *) | 393 | *) |
363 | [[ $prev == $object ]] && \ | 394 | [[ $prev == $object ]] && \ |
364 | COMPREPLY=( $( compgen -W 'delete dump getnext help \ | 395 | COMPREPLY=( $( compgen -W 'delete dump getnext help \ |
365 | lookup pin show list update' -- "$cur" ) ) | 396 | lookup pin event_pipe show list update' -- \ |
397 | "$cur" ) ) | ||
366 | ;; | 398 | ;; |
367 | esac | 399 | esac |
368 | ;; | 400 | ;; |