Lines Matching refs:info
62 static void *alloc_value(struct bpf_map_info *info) in alloc_value() argument
64 if (map_is_per_cpu(info->type)) in alloc_value()
65 return malloc(round_up(info->value_size, 8) * in alloc_value()
68 return malloc(info->value_size); in alloc_value()
132 static void print_entry_json(struct bpf_map_info *info, unsigned char *key, in print_entry_json() argument
137 if (!map_is_per_cpu(info->type)) { in print_entry_json()
139 print_hex_data_json(key, info->key_size); in print_entry_json()
141 print_hex_data_json(value, info->value_size); in print_entry_json()
142 if (map_is_map_of_maps(info->type)) in print_entry_json()
153 do_dump_btf(&d, info, key, value); in print_entry_json()
159 step = round_up(info->value_size, 8); in print_entry_json()
162 print_hex_data_json(key, info->key_size); in print_entry_json()
173 info->value_size); in print_entry_json()
186 do_dump_btf(&d, info, key, value); in print_entry_json()
194 print_entry_error_msg(struct bpf_map_info *info, unsigned char *key, in print_entry_error_msg() argument
200 break_names = info->key_size > 16 || msg_size > 16; in print_entry_error_msg()
201 single_line = info->key_size + msg_size <= 24 && !break_names; in print_entry_error_msg()
204 fprint_hex(stdout, key, info->key_size, " "); in print_entry_error_msg()
247 static void print_entry_plain(struct bpf_map_info *info, unsigned char *key, in print_entry_plain() argument
250 if (!map_is_per_cpu(info->type)) { in print_entry_plain()
253 break_names = info->key_size > 16 || info->value_size > 16; in print_entry_plain()
254 single_line = info->key_size + info->value_size <= 24 && in print_entry_plain()
257 if (info->key_size) { in print_entry_plain()
259 fprint_hex(stdout, key, info->key_size, " "); in print_entry_plain()
264 if (info->value_size) { in print_entry_plain()
265 if (map_is_map_of_maps(info->type)) { in print_entry_plain()
270 fprint_hex(stdout, value, info->value_size, " "); in print_entry_plain()
279 step = round_up(info->value_size, 8); in print_entry_plain()
281 if (info->key_size) { in print_entry_plain()
283 fprint_hex(stdout, key, info->key_size, " "); in print_entry_plain()
286 if (info->value_size) { in print_entry_plain()
289 i, info->value_size > 16 ? '\n' : ' '); in print_entry_plain()
291 info->value_size, " "); in print_entry_plain()
327 static void fill_per_cpu_value(struct bpf_map_info *info, void *value) in fill_per_cpu_value() argument
331 if (!map_is_per_cpu(info->type)) in fill_per_cpu_value()
335 step = round_up(info->value_size, 8); in fill_per_cpu_value()
337 memcpy(value + i * step, value, info->value_size); in fill_per_cpu_value()
340 static int parse_elem(char **argv, struct bpf_map_info *info, void *key, in parse_elem() argument
364 return parse_elem(argv, info, NULL, value, key_size, value_size, in parse_elem()
379 if (map_is_map_of_maps(info->type)) { in parse_elem()
397 } else if (map_is_map_of_progs(info->type)) { in parse_elem()
423 fill_per_cpu_value(info, value); in parse_elem()
426 return parse_elem(argv, info, key, NULL, key_size, value_size, in parse_elem()
442 return parse_elem(argv + 1, info, key, value, key_size, in parse_elem()
450 static void show_map_header_json(struct bpf_map_info *info, json_writer_t *wtr) in show_map_header_json() argument
454 jsonw_uint_field(wtr, "id", info->id); in show_map_header_json()
455 map_type_str = libbpf_bpf_map_type_str(info->type); in show_map_header_json()
459 jsonw_uint_field(wtr, "type", info->type); in show_map_header_json()
461 if (*info->name) in show_map_header_json()
462 jsonw_string_field(wtr, "name", info->name); in show_map_header_json()
465 jsonw_printf(wtr, "%u", info->map_flags); in show_map_header_json()
468 static int show_map_close_json(int fd, struct bpf_map_info *info) in show_map_close_json() argument
478 show_map_header_json(info, json_wtr); in show_map_close_json()
480 print_dev_json(info->ifindex, info->netns_dev, info->netns_ino); in show_map_close_json()
482 jsonw_uint_field(json_wtr, "bytes_key", info->key_size); in show_map_close_json()
483 jsonw_uint_field(json_wtr, "bytes_value", info->value_size); in show_map_close_json()
484 jsonw_uint_field(json_wtr, "max_entries", info->max_entries); in show_map_close_json()
490 if (info->type == BPF_MAP_TYPE_PROG_ARRAY) { in show_map_close_json()
521 if (info->btf_id) in show_map_close_json()
522 jsonw_int_field(json_wtr, "btf_id", info->btf_id); in show_map_close_json()
529 hashmap__for_each_key_entry(map_table, entry, info->id) in show_map_close_json()
534 emit_obj_refs_json(refs_table, info->id, json_wtr); in show_map_close_json()
541 static void show_map_header_plain(struct bpf_map_info *info) in show_map_header_plain() argument
545 printf("%u: ", info->id); in show_map_header_plain()
547 map_type_str = libbpf_bpf_map_type_str(info->type); in show_map_header_plain()
551 printf("type %u ", info->type); in show_map_header_plain()
553 if (*info->name) in show_map_header_plain()
554 printf("name %s ", info->name); in show_map_header_plain()
556 printf("flags 0x%x", info->map_flags); in show_map_header_plain()
557 print_dev_plain(info->ifindex, info->netns_dev, info->netns_ino); in show_map_header_plain()
561 static int show_map_close_plain(int fd, struct bpf_map_info *info) in show_map_close_plain() argument
569 show_map_header_plain(info); in show_map_close_plain()
571 info->key_size, info->value_size, info->max_entries); in show_map_close_plain()
577 if (info->type == BPF_MAP_TYPE_PROG_ARRAY) { in show_map_close_plain()
605 hashmap__for_each_key_entry(map_table, entry, info->id) in show_map_close_plain()
614 if (info->btf_id || frozen) in show_map_close_plain()
617 if (info->btf_id) in show_map_close_plain()
618 printf("btf_id %u", info->btf_id); in show_map_close_plain()
621 printf("%sfrozen", info->btf_id ? " " : ""); in show_map_close_plain()
623 emit_obj_refs_plain(refs_table, info->id, "\n\tpids "); in show_map_close_plain()
631 struct bpf_map_info info = {}; in do_show_subset() local
632 __u32 len = sizeof(info); in do_show_subset()
649 err = bpf_map_get_info_by_fd(fds[i], &info, &len); in do_show_subset()
659 show_map_close_json(fds[i], &info); in do_show_subset()
661 show_map_close_plain(fds[i], &info); in do_show_subset()
676 struct bpf_map_info info = {}; in do_show() local
677 __u32 len = sizeof(info); in do_show()
722 err = bpf_map_get_info_by_fd(fd, &info, &len); in do_show()
730 show_map_close_json(fd, &info); in do_show()
732 show_map_close_plain(fd, &info); in do_show()
773 struct bpf_map_info info = {}; in maps_have_btf() local
774 __u32 len = sizeof(info); in maps_have_btf()
778 err = bpf_map_get_info_by_fd(fds[i], &info, &len); in maps_have_btf()
784 if (!info.btf_id) in maps_have_btf()
793 static int get_map_kv_btf(const struct bpf_map_info *info, struct btf **btf) in get_map_kv_btf() argument
797 if (info->btf_vmlinux_value_type_id) { in get_map_kv_btf()
806 } else if (info->btf_value_type_id) { in get_map_kv_btf()
807 *btf = btf__load_from_kernel_by_id(info->btf_id); in get_map_kv_btf()
826 map_dump(int fd, struct bpf_map_info *info, json_writer_t *wtr, in map_dump() argument
834 key = malloc(info->key_size); in map_dump()
835 value = alloc_value(info); in map_dump()
845 err = get_map_kv_btf(info, &btf); in map_dump()
852 show_map_header_json(info, wtr); in map_dump()
857 show_map_header_plain(info); in map_dump()
860 if (info->type == BPF_MAP_TYPE_REUSEPORT_SOCKARRAY && in map_dump()
861 info->value_size != 8) { in map_dump()
864 map_type_str = libbpf_bpf_map_type_str(info->type); in map_dump()
875 if (!dump_map_elem(fd, key, value, info, btf, wtr)) in map_dump()
901 struct bpf_map_info info = {}; in do_dump() local
903 __u32 len = sizeof(info); in do_dump()
939 if (bpf_map_get_info_by_fd(fds[i], &info, &len)) { in do_dump()
943 err = map_dump(fds[i], &info, wtr, nb_fds > 1); in do_dump()
965 static int alloc_key_value(struct bpf_map_info *info, void **key, void **value) in alloc_key_value() argument
970 if (info->key_size) { in alloc_key_value()
971 *key = malloc(info->key_size); in alloc_key_value()
978 if (info->value_size) { in alloc_key_value()
979 *value = alloc_value(info); in alloc_key_value()
993 struct bpf_map_info info = {}; in do_update() local
994 __u32 len = sizeof(info); in do_update()
1003 fd = map_parse_fd_and_info(&argc, &argv, &info, &len, 0); in do_update()
1007 err = alloc_key_value(&info, &key, &value); in do_update()
1011 err = parse_elem(argv, &info, key, value, info.key_size, in do_update()
1012 info.value_size, &flags, &value_fd, 0); in do_update()
1034 static void print_key_value(struct bpf_map_info *info, void *key, in print_key_value() argument
1040 if (get_map_kv_btf(info, &btf)) in print_key_value()
1044 print_entry_json(info, key, value, btf); in print_key_value()
1054 print_entry_plain(info, key, value); in print_key_value()
1062 do_dump_btf(&d, info, key, value); in print_key_value()
1066 print_entry_plain(info, key, value); in print_key_value()
1073 struct bpf_map_info info = {}; in do_lookup() local
1074 __u32 len = sizeof(info); in do_lookup()
1082 fd = map_parse_fd_and_info(&argc, &argv, &info, &len, BPF_F_RDONLY); in do_lookup()
1086 err = alloc_key_value(&info, &key, &value); in do_lookup()
1090 err = parse_elem(argv, &info, key, NULL, info.key_size, 0, NULL, NULL, in do_lookup()
1102 fprint_hex(stdout, key, info.key_size, " "); in do_lookup()
1113 print_key_value(&info, key, value); in do_lookup()
1125 struct bpf_map_info info = {}; in do_getnext() local
1126 __u32 len = sizeof(info); in do_getnext()
1134 fd = map_parse_fd_and_info(&argc, &argv, &info, &len, BPF_F_RDONLY); in do_getnext()
1138 key = malloc(info.key_size); in do_getnext()
1139 nextkey = malloc(info.key_size); in do_getnext()
1147 err = parse_elem(argv, &info, key, NULL, info.key_size, 0, NULL, in do_getnext()
1166 print_hex_data_json(key, info.key_size); in do_getnext()
1171 print_hex_data_json(nextkey, info.key_size); in do_getnext()
1176 fprint_hex(stdout, key, info.key_size, " "); in do_getnext()
1182 fprint_hex(stdout, nextkey, info.key_size, " "); in do_getnext()
1196 struct bpf_map_info info = {}; in do_delete() local
1197 __u32 len = sizeof(info); in do_delete()
1205 fd = map_parse_fd_and_info(&argc, &argv, &info, &len, 0); in do_delete()
1209 key = malloc(info.key_size); in do_delete()
1216 err = parse_elem(argv, &info, key, NULL, info.key_size, 0, NULL, NULL, in do_delete()
1324 struct bpf_map_info info = {}; in do_create() local
1325 __u32 len = sizeof(info); in do_create()
1332 &info, &len, BPF_F_RDONLY); in do_create()
1372 struct bpf_map_info info = {}; in do_pop_dequeue() local
1373 __u32 len = sizeof(info); in do_pop_dequeue()
1381 fd = map_parse_fd_and_info(&argc, &argv, &info, &len, 0); in do_pop_dequeue()
1385 err = alloc_key_value(&info, &key, &value); in do_pop_dequeue()
1403 print_key_value(&info, key, value); in do_pop_dequeue()