Skip to content

Commit

Permalink
tools: bpftool: show frozen status for maps
Browse files Browse the repository at this point in the history
When listing maps, read their "frozen" status from procfs, and tell if
maps are frozen.

As commit log for map freezing command mentions that the feature might
be extended with flags (e.g. for write-only instead of read-only) in the
future, use an integer and not a boolean for JSON output.

Signed-off-by: Quentin Monnet <quentin.monnet@netronome.com>
Reviewed-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
  • Loading branch information
Quentin Monnet authored and Daniel Borkmann committed Aug 21, 2019
1 parent 1f8919b commit c354ff2
Showing 1 changed file with 27 additions and 3 deletions.
30 changes: 27 additions & 3 deletions tools/bpf/bpftool/map.c
Original file line number Diff line number Diff line change
Expand Up @@ -481,9 +481,11 @@ static int parse_elem(char **argv, struct bpf_map_info *info,

static int show_map_close_json(int fd, struct bpf_map_info *info)
{
char *memlock;
char *memlock, *frozen_str;
int frozen = 0;

memlock = get_fdinfo(fd, "memlock");
frozen_str = get_fdinfo(fd, "frozen");

jsonw_start_object(json_wtr);

Expand Down Expand Up @@ -533,6 +535,12 @@ static int show_map_close_json(int fd, struct bpf_map_info *info)
}
close(fd);

if (frozen_str) {
frozen = atoi(frozen_str);
free(frozen_str);
}
jsonw_int_field(json_wtr, "frozen", frozen);

if (info->btf_id)
jsonw_int_field(json_wtr, "btf_id", info->btf_id);

Expand All @@ -555,9 +563,11 @@ static int show_map_close_json(int fd, struct bpf_map_info *info)

static int show_map_close_plain(int fd, struct bpf_map_info *info)
{
char *memlock;
char *memlock, *frozen_str;
int frozen = 0;

memlock = get_fdinfo(fd, "memlock");
frozen_str = get_fdinfo(fd, "frozen");

printf("%u: ", info->id);
if (info->type < ARRAY_SIZE(map_type_name))
Expand Down Expand Up @@ -610,9 +620,23 @@ static int show_map_close_plain(int fd, struct bpf_map_info *info)
printf("\n\tpinned %s", obj->path);
}
}
printf("\n");

if (frozen_str) {
frozen = atoi(frozen_str);
free(frozen_str);
}

if (!info->btf_id && !frozen)
return 0;

printf("\t");

if (info->btf_id)
printf("\n\tbtf_id %d", info->btf_id);
printf("btf_id %d", info->btf_id);

if (frozen)
printf("%sfrozen", info->btf_id ? " " : "");

printf("\n");
return 0;
Expand Down

0 comments on commit c354ff2

Please sign in to comment.