This is intended to be used with queues and stacks and be more
user-friendly than 'lookup' without key/value.

Example:
bpftool map create /sys/fs/bpf/q type queue value 4 entries 10 name q
bpftool map update pinned /sys/fs/bpf/q value 0 1 2 3
bpftool map peek pinned /sys/fs/bpf/q
value: 00 01 02 03

Signed-off-by: Stanislav Fomichev <s...@google.com>
---
 tools/bpf/bpftool/Documentation/bpftool-map.rst | 4 ++++
 tools/bpf/bpftool/bash-completion/bpftool       | 5 +++--
 tools/bpf/bpftool/map.c                         | 4 +++-
 3 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/tools/bpf/bpftool/Documentation/bpftool-map.rst 
b/tools/bpf/bpftool/Documentation/bpftool-map.rst
index f34cace771bd..b79da683da88 100644
--- a/tools/bpf/bpftool/Documentation/bpftool-map.rst
+++ b/tools/bpf/bpftool/Documentation/bpftool-map.rst
@@ -31,6 +31,7 @@ MAP COMMANDS
 |      **bpftool** **map delete**     *MAP*  **key** *DATA*
 |      **bpftool** **map pin**        *MAP*  *FILE*
 |      **bpftool** **map event_pipe** *MAP* [**cpu** *N* **index** *M*]
+|      **bpftool** **map peek**       *MAP*
 |      **bpftool** **map help**
 |
 |      *MAP* := { **id** *MAP_ID* | **pinned** *FILE* }
@@ -107,6 +108,9 @@ DESCRIPTION
                  replace any existing ring.  Any other application will stop
                  receiving events if it installed its rings earlier.
 
+       **bpftool map peek**  *MAP*
+                 Peek next **value** in the queue or stack.
+
        **bpftool map help**
                  Print short help message.
 
diff --git a/tools/bpf/bpftool/bash-completion/bpftool 
b/tools/bpf/bpftool/bash-completion/bpftool
index e4e4fab1b8c7..fe4880d9bd8d 100644
--- a/tools/bpf/bpftool/bash-completion/bpftool
+++ b/tools/bpf/bpftool/bash-completion/bpftool
@@ -382,7 +382,7 @@ _bpftool()
         map)
             local MAP_TYPE='id pinned'
             case $command in
-                show|list|dump)
+                show|list|dump|peek)
                     case $prev in
                         $command)
                             COMPREPLY=( $( compgen -W "$MAP_TYPE" -- "$cur" ) )
@@ -546,7 +546,8 @@ _bpftool()
                 *)
                     [[ $prev == $object ]] && \
                         COMPREPLY=( $( compgen -W 'delete dump getnext help \
-                            lookup pin event_pipe show list update create' -- \
+                            lookup pin event_pipe show list update create \
+                            peek' -- \
                             "$cur" ) )
                     ;;
             esac
diff --git a/tools/bpf/bpftool/map.c b/tools/bpf/bpftool/map.c
index 3f599399913b..d7344fcd2089 100644
--- a/tools/bpf/bpftool/map.c
+++ b/tools/bpf/bpftool/map.c
@@ -1168,6 +1168,7 @@ static int do_help(int argc, char **argv)
                "       %s %s delete     MAP  key DATA\n"
                "       %s %s pin        MAP  FILE\n"
                "       %s %s event_pipe MAP [cpu N index M]\n"
+               "       %s %s peek       MAP\n"
                "       %s %s help\n"
                "\n"
                "       " HELP_SPEC_MAP "\n"
@@ -1185,7 +1186,7 @@ static int do_help(int argc, char **argv)
                bin_name, argv[-2], bin_name, argv[-2], bin_name, argv[-2],
                bin_name, argv[-2], bin_name, argv[-2], bin_name, argv[-2],
                bin_name, argv[-2], bin_name, argv[-2], bin_name, argv[-2],
-               bin_name, argv[-2]);
+               bin_name, argv[-2], bin_name, argv[-2]);
 
        return 0;
 }
@@ -1202,6 +1203,7 @@ static const struct cmd cmds[] = {
        { "pin",        do_pin },
        { "event_pipe", do_event_pipe },
        { "create",     do_create },
+       { "peek",       do_lookup },
        { 0 }
 };
 
-- 
2.20.1.97.g81188d93c3-goog

Reply via email to