提交 549d4d3d 编写于 作者: S Stanislav Fomichev 提交者: Daniel Borkmann

bpftool: add push and enqueue commands

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: NStanislav Fomichev <sdf@google.com>
Signed-off-by: NDaniel Borkmann <daniel@iogearbox.net>
上级 66cf6e0b
...@@ -32,6 +32,8 @@ MAP COMMANDS ...@@ -32,6 +32,8 @@ MAP COMMANDS
| **bpftool** **map pin** *MAP* *FILE* | **bpftool** **map pin** *MAP* *FILE*
| **bpftool** **map event_pipe** *MAP* [**cpu** *N* **index** *M*] | **bpftool** **map event_pipe** *MAP* [**cpu** *N* **index** *M*]
| **bpftool** **map peek** *MAP* | **bpftool** **map peek** *MAP*
| **bpftool** **map push** *MAP* **value** *VALUE*
| **bpftool** **map enqueue** *MAP* **value** *VALUE*
| **bpftool** **map help** | **bpftool** **map help**
| |
| *MAP* := { **id** *MAP_ID* | **pinned** *FILE* } | *MAP* := { **id** *MAP_ID* | **pinned** *FILE* }
...@@ -111,6 +113,12 @@ DESCRIPTION ...@@ -111,6 +113,12 @@ DESCRIPTION
**bpftool map peek** *MAP* **bpftool map peek** *MAP*
Peek next **value** in the queue or stack. 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** **bpftool map help**
Print short help message. Print short help message.
......
...@@ -1169,6 +1169,8 @@ static int do_help(int argc, char **argv) ...@@ -1169,6 +1169,8 @@ static int do_help(int argc, char **argv)
" %s %s pin MAP FILE\n" " %s %s pin MAP FILE\n"
" %s %s event_pipe MAP [cpu N index M]\n" " %s %s event_pipe MAP [cpu N index M]\n"
" %s %s peek MAP\n" " %s %s peek MAP\n"
" %s %s push MAP value VALUE\n"
" %s %s enqueue MAP value VALUE\n"
" %s %s help\n" " %s %s help\n"
"\n" "\n"
" " HELP_SPEC_MAP "\n" " " HELP_SPEC_MAP "\n"
...@@ -1186,7 +1188,8 @@ static int do_help(int argc, char **argv) ...@@ -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], 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; return 0;
} }
...@@ -1204,6 +1207,8 @@ static const struct cmd cmds[] = { ...@@ -1204,6 +1207,8 @@ static const struct cmd cmds[] = {
{ "event_pipe", do_event_pipe }, { "event_pipe", do_event_pipe },
{ "create", do_create }, { "create", do_create },
{ "peek", do_lookup }, { "peek", do_lookup },
{ "push", do_update },
{ "enqueue", do_update },
{ 0 } { 0 }
}; };
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册