bpftool: add push and enqueue commands
authorStanislav Fomichev <sdf@google.com>
Wed, 16 Jan 2019 19:10:03 +0000 (11:10 -0800)
committerDaniel Borkmann <daniel@iogearbox.net>
Thu, 17 Jan 2019 09:30:31 +0000 (10:30 +0100)
This is intended to be used with queues and stacks and be more
user-friendly than 'update' without the key.

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

bpftool map create /sys/fs/bpf/s type stack value 4 entries 10 name s
bpftool map enqueue pinned /sys/fs/bpf/s value 0 1 2 3
bpftool map peek pinned /sys/fs/bpf/s
value: 00 01 02 03

Signed-off-by: Stanislav Fomichev <sdf@google.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
tools/bpf/bpftool/Documentation/bpftool-map.rst
tools/bpf/bpftool/map.c

index b79da683da8895b91729693a2ee8b3941f293dd9..435a79d2eed5673ecfae48746ea3e41513ac6157 100644 (file)
@@ -32,6 +32,8 @@ MAP COMMANDS
 |      **bpftool** **map pin**        *MAP*  *FILE*
 |      **bpftool** **map event_pipe** *MAP* [**cpu** *N* **index** *M*]
 |      **bpftool** **map peek**       *MAP*
+|      **bpftool** **map push**       *MAP* **value** *VALUE*
+|      **bpftool** **map enqueue**    *MAP* **value** *VALUE*
 |      **bpftool** **map help**
 |
 |      *MAP* := { **id** *MAP_ID* | **pinned** *FILE* }
@@ -111,6 +113,12 @@ DESCRIPTION
        **bpftool map peek**  *MAP*
                  Peek next **value** in the queue or stack.
 
+       **bpftool map push**  *MAP* **value** *VALUE*
+                 Push **value** onto the stack.
+
+       **bpftool map enqueue**  *MAP* **value** *VALUE*
+                 Enqueue **value** into the queue.
+
        **bpftool map help**
                  Print short help message.
 
index d7344fcd208926df8e2c1493a27c4ad7aa5c950f..6b5fcbe2d9d4b59a962cc3495123ca488c7bb109 100644 (file)
@@ -1169,6 +1169,8 @@ static int do_help(int argc, char **argv)
                "       %s %s pin        MAP  FILE\n"
                "       %s %s event_pipe MAP [cpu N index M]\n"
                "       %s %s peek       MAP\n"
+               "       %s %s push       MAP value VALUE\n"
+               "       %s %s enqueue    MAP value VALUE\n"
                "       %s %s help\n"
                "\n"
                "       " HELP_SPEC_MAP "\n"
@@ -1186,7 +1188,8 @@ 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], bin_name, argv[-2], bin_name, argv[-2],
+               bin_name, argv[-2]);
 
        return 0;
 }
@@ -1204,6 +1207,8 @@ static const struct cmd cmds[] = {
        { "event_pipe", do_event_pipe },
        { "create",     do_create },
        { "peek",       do_lookup },
+       { "push",       do_update },
+       { "enqueue",    do_update },
        { 0 }
 };