Loading tools/bpf/bpftool/Documentation/bpftool-map.rst +9 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ MAP COMMANDS | **bpftool** **map pop** *MAP* | **bpftool** **map enqueue** *MAP* **value** *VALUE* | **bpftool** **map dequeue** *MAP* | **bpftool** **map freeze** *MAP* | **bpftool** **map help** | | *MAP* := { **id** *MAP_ID* | **pinned** *FILE* } Loading Loading @@ -127,6 +128,14 @@ DESCRIPTION **bpftool map dequeue** *MAP* Dequeue and print **value** from the queue. **bpftool map freeze** *MAP* Freeze the map as read-only from user space. Entries from a frozen map can not longer be updated or deleted with the **bpf\ ()** system call. This operation is not reversible, and the map remains immutable from user space until its destruction. However, read and write permissions for BPF programs to the map remain unchanged. **bpftool map help** Print short help message. Loading tools/bpf/bpftool/bash-completion/bpftool +2 −2 Original line number Diff line number Diff line Loading @@ -449,7 +449,7 @@ _bpftool() map) local MAP_TYPE='id pinned' case $command in show|list|dump|peek|pop|dequeue) show|list|dump|peek|pop|dequeue|freeze) case $prev in $command) COMPREPLY=( $( compgen -W "$MAP_TYPE" -- "$cur" ) ) Loading Loading @@ -638,7 +638,7 @@ _bpftool() [[ $prev == $object ]] && \ COMPREPLY=( $( compgen -W 'delete dump getnext help \ lookup pin event_pipe show list update create \ peek push enqueue pop dequeue' -- \ peek push enqueue pop dequeue freeze' -- \ "$cur" ) ) ;; esac Loading tools/bpf/bpftool/map.c +33 −1 Original line number Diff line number Diff line Loading @@ -1262,6 +1262,35 @@ static int do_pop_dequeue(int argc, char **argv) return err; } static int do_freeze(int argc, char **argv) { int err, fd; if (!REQ_ARGS(2)) return -1; fd = map_parse_fd(&argc, &argv); if (fd < 0) return -1; if (argc) { close(fd); return BAD_ARG(); } err = bpf_map_freeze(fd); close(fd); if (err) { p_err("failed to freeze map: %s", strerror(errno)); return err; } if (json_output) jsonw_null(json_wtr); return 0; } static int do_help(int argc, char **argv) { if (json_output) { Loading @@ -1286,6 +1315,7 @@ static int do_help(int argc, char **argv) " %s %s pop MAP\n" " %s %s enqueue MAP value VALUE\n" " %s %s dequeue MAP\n" " %s %s freeze MAP\n" " %s %s help\n" "\n" " " HELP_SPEC_MAP "\n" Loading @@ -1304,7 +1334,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]); return 0; } Loading @@ -1326,6 +1357,7 @@ static const struct cmd cmds[] = { { "enqueue", do_update }, { "pop", do_pop_dequeue }, { "dequeue", do_pop_dequeue }, { "freeze", do_freeze }, { 0 } }; Loading Loading
tools/bpf/bpftool/Documentation/bpftool-map.rst +9 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ MAP COMMANDS | **bpftool** **map pop** *MAP* | **bpftool** **map enqueue** *MAP* **value** *VALUE* | **bpftool** **map dequeue** *MAP* | **bpftool** **map freeze** *MAP* | **bpftool** **map help** | | *MAP* := { **id** *MAP_ID* | **pinned** *FILE* } Loading Loading @@ -127,6 +128,14 @@ DESCRIPTION **bpftool map dequeue** *MAP* Dequeue and print **value** from the queue. **bpftool map freeze** *MAP* Freeze the map as read-only from user space. Entries from a frozen map can not longer be updated or deleted with the **bpf\ ()** system call. This operation is not reversible, and the map remains immutable from user space until its destruction. However, read and write permissions for BPF programs to the map remain unchanged. **bpftool map help** Print short help message. Loading
tools/bpf/bpftool/bash-completion/bpftool +2 −2 Original line number Diff line number Diff line Loading @@ -449,7 +449,7 @@ _bpftool() map) local MAP_TYPE='id pinned' case $command in show|list|dump|peek|pop|dequeue) show|list|dump|peek|pop|dequeue|freeze) case $prev in $command) COMPREPLY=( $( compgen -W "$MAP_TYPE" -- "$cur" ) ) Loading Loading @@ -638,7 +638,7 @@ _bpftool() [[ $prev == $object ]] && \ COMPREPLY=( $( compgen -W 'delete dump getnext help \ lookup pin event_pipe show list update create \ peek push enqueue pop dequeue' -- \ peek push enqueue pop dequeue freeze' -- \ "$cur" ) ) ;; esac Loading
tools/bpf/bpftool/map.c +33 −1 Original line number Diff line number Diff line Loading @@ -1262,6 +1262,35 @@ static int do_pop_dequeue(int argc, char **argv) return err; } static int do_freeze(int argc, char **argv) { int err, fd; if (!REQ_ARGS(2)) return -1; fd = map_parse_fd(&argc, &argv); if (fd < 0) return -1; if (argc) { close(fd); return BAD_ARG(); } err = bpf_map_freeze(fd); close(fd); if (err) { p_err("failed to freeze map: %s", strerror(errno)); return err; } if (json_output) jsonw_null(json_wtr); return 0; } static int do_help(int argc, char **argv) { if (json_output) { Loading @@ -1286,6 +1315,7 @@ static int do_help(int argc, char **argv) " %s %s pop MAP\n" " %s %s enqueue MAP value VALUE\n" " %s %s dequeue MAP\n" " %s %s freeze MAP\n" " %s %s help\n" "\n" " " HELP_SPEC_MAP "\n" Loading @@ -1304,7 +1334,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]); return 0; } Loading @@ -1326,6 +1357,7 @@ static const struct cmd cmds[] = { { "enqueue", do_update }, { "pop", do_pop_dequeue }, { "dequeue", do_pop_dequeue }, { "freeze", do_freeze }, { 0 } }; Loading