Lines Matching refs:info

88 static void *alloc_value(struct bpf_map_info *info)
90 if (map_is_per_cpu(info->type))
91 return malloc(round_up(info->value_size, 8) *
94 return malloc(info->value_size);
158 static void print_entry_json(struct bpf_map_info *info, unsigned char *key,
163 if (!map_is_per_cpu(info->type)) {
165 print_hex_data_json(key, info->key_size);
167 print_hex_data_json(value, info->value_size);
176 do_dump_btf(&d, info, key, value);
182 step = round_up(info->value_size, 8);
185 print_hex_data_json(key, info->key_size);
196 info->value_size);
209 do_dump_btf(&d, info, key, value);
217 print_entry_error_msg(struct bpf_map_info *info, unsigned char *key,
223 break_names = info->key_size > 16 || msg_size > 16;
224 single_line = info->key_size + msg_size <= 24 && !break_names;
227 fprint_hex(stdout, key, info->key_size, " ");
270 static void print_entry_plain(struct bpf_map_info *info, unsigned char *key,
273 if (!map_is_per_cpu(info->type)) {
276 break_names = info->key_size > 16 || info->value_size > 16;
277 single_line = info->key_size + info->value_size <= 24 &&
280 if (info->key_size) {
282 fprint_hex(stdout, key, info->key_size, " ");
287 if (info->value_size) {
289 fprint_hex(stdout, value, info->value_size, " ");
297 step = round_up(info->value_size, 8);
299 if (info->key_size) {
301 fprint_hex(stdout, key, info->key_size, " ");
304 if (info->value_size) {
307 i, info->value_size > 16 ? '\n' : ' ');
309 info->value_size, " ");
345 static void fill_per_cpu_value(struct bpf_map_info *info, void *value)
349 if (!map_is_per_cpu(info->type))
353 step = round_up(info->value_size, 8);
355 memcpy(value + i * step, value, info->value_size);
358 static int parse_elem(char **argv, struct bpf_map_info *info,
382 return parse_elem(argv, info, NULL, value, key_size, value_size,
397 if (map_is_map_of_maps(info->type)) {
415 } else if (map_is_map_of_progs(info->type)) {
441 fill_per_cpu_value(info, value);
444 return parse_elem(argv, info, key, NULL, key_size, value_size,
460 return parse_elem(argv + 1, info, key, value, key_size,
468 static void show_map_header_json(struct bpf_map_info *info, json_writer_t *wtr)
470 jsonw_uint_field(wtr, "id", info->id);
471 if (info->type < ARRAY_SIZE(map_type_name))
472 jsonw_string_field(wtr, "type", map_type_name[info->type]);
474 jsonw_uint_field(wtr, "type", info->type);
476 if (*info->name)
477 jsonw_string_field(wtr, "name", info->name);
480 jsonw_printf(wtr, "%d", info->map_flags);
483 static int show_map_close_json(int fd, struct bpf_map_info *info)
493 show_map_header_json(info, json_wtr);
495 print_dev_json(info->ifindex, info->netns_dev, info->netns_ino);
497 jsonw_uint_field(json_wtr, "bytes_key", info->key_size);
498 jsonw_uint_field(json_wtr, "bytes_value", info->value_size);
499 jsonw_uint_field(json_wtr, "max_entries", info->max_entries);
505 if (info->type == BPF_MAP_TYPE_PROG_ARRAY) {
534 if (info->btf_id)
535 jsonw_int_field(json_wtr, "btf_id", info->btf_id);
542 hash_for_each_possible(map_table.table, obj, hash, info->id) {
543 if (obj->id == info->id)
549 emit_obj_refs_json(&refs_table, info->id, json_wtr);
556 static void show_map_header_plain(struct bpf_map_info *info)
558 printf("%u: ", info->id);
559 if (info->type < ARRAY_SIZE(map_type_name))
560 printf("%s ", map_type_name[info->type]);
562 printf("type %u ", info->type);
564 if (*info->name)
565 printf("name %s ", info->name);
567 printf("flags 0x%x", info->map_flags);
568 print_dev_plain(info->ifindex, info->netns_dev, info->netns_ino);
572 static int show_map_close_plain(int fd, struct bpf_map_info *info)
580 show_map_header_plain(info);
582 info->key_size, info->value_size, info->max_entries);
588 if (info->type == BPF_MAP_TYPE_PROG_ARRAY) {
615 hash_for_each_possible(map_table.table, obj, hash, info->id) {
616 if (obj->id == info->id)
627 if (!info->btf_id && !frozen)
632 if (info->btf_id)
633 printf("btf_id %d", info->btf_id);
636 printf("%sfrozen", info->btf_id ? " " : "");
638 emit_obj_refs_plain(&refs_table, info->id, "\n\tpids ");
646 struct bpf_map_info info = {};
647 __u32 len = sizeof(info);
664 err = bpf_obj_get_info_by_fd(fds[i], &info, &len);
666 p_err("can't get map info: %s",
674 show_map_close_json(fds[i], &info);
676 show_map_close_plain(fds[i], &info);
690 struct bpf_map_info info = {};
691 __u32 len = sizeof(info);
727 err = bpf_obj_get_info_by_fd(fd, &info, &len);
729 p_err("can't get map info: %s", strerror(errno));
735 show_map_close_json(fd, &info);
737 show_map_close_plain(fd, &info);
775 struct bpf_map_info info = {};
776 __u32 len = sizeof(info);
780 err = bpf_obj_get_info_by_fd(fds[i], &info, &len);
782 p_err("can't get map info: %s", strerror(errno));
786 if (!info.btf_id)
795 static struct btf *get_map_kv_btf(const struct bpf_map_info *info)
799 if (info->btf_vmlinux_value_type_id) {
806 } else if (info->btf_value_type_id) {
809 err = btf__get_from_id(info->btf_id, &btf);
832 map_dump(int fd, struct bpf_map_info *info, json_writer_t *wtr,
840 key = malloc(info->key_size);
841 value = alloc_value(info);
851 btf = get_map_kv_btf(info);
859 show_map_header_json(info, wtr);
864 show_map_header_plain(info);
867 if (info->type == BPF_MAP_TYPE_REUSEPORT_SOCKARRAY &&
868 info->value_size != 8)
870 map_type_name[info->type]);
878 if (!dump_map_elem(fd, key, value, info, btf, wtr))
904 struct bpf_map_info info = {};
906 __u32 len = sizeof(info);
942 if (bpf_obj_get_info_by_fd(fds[i], &info, &len)) {
943 p_err("can't get map info: %s", strerror(errno));
946 err = map_dump(fds[i], &info, wtr, nb_fds > 1);
968 static int alloc_key_value(struct bpf_map_info *info, void **key, void **value)
973 if (info->key_size) {
974 *key = malloc(info->key_size);
981 if (info->value_size) {
982 *value = alloc_value(info);
996 struct bpf_map_info info = {};
997 __u32 len = sizeof(info);
1006 fd = map_parse_fd_and_info(&argc, &argv, &info, &len);
1010 err = alloc_key_value(&info, &key, &value);
1014 err = parse_elem(argv, &info, key, value, info.key_size,
1015 info.value_size, &flags, &value_fd);
1037 static void print_key_value(struct bpf_map_info *info, void *key,
1044 err = btf__get_from_id(info->btf_id, &btf);
1051 print_entry_json(info, key, value, btf);
1061 print_entry_plain(info, key, value);
1069 do_dump_btf(&d, info, key, value);
1073 print_entry_plain(info, key, value);
1080 struct bpf_map_info info = {};
1081 __u32 len = sizeof(info);
1089 fd = map_parse_fd_and_info(&argc, &argv, &info, &len);
1093 err = alloc_key_value(&info, &key, &value);
1097 err = parse_elem(argv, &info, key, NULL, info.key_size, 0, NULL, NULL);
1108 fprint_hex(stdout, key, info.key_size, " ");
1119 print_key_value(&info, key, value);
1131 struct bpf_map_info info = {};
1132 __u32 len = sizeof(info);
1140 fd = map_parse_fd_and_info(&argc, &argv, &info, &len);
1144 key = malloc(info.key_size);
1145 nextkey = malloc(info.key_size);
1153 err = parse_elem(argv, &info, key, NULL, info.key_size, 0,
1172 print_hex_data_json(key, info.key_size);
1177 print_hex_data_json(nextkey, info.key_size);
1182 fprint_hex(stdout, key, info.key_size, " ");
1188 fprint_hex(stdout, nextkey, info.key_size, " ");
1202 struct bpf_map_info info = {};
1203 __u32 len = sizeof(info);
1211 fd = map_parse_fd_and_info(&argc, &argv, &info, &len);
1215 key = malloc(info.key_size);
1222 err = parse_elem(argv, &info, key, NULL, info.key_size, 0, NULL, NULL);
1312 struct bpf_map_info info = {};
1313 __u32 len = sizeof(info);
1320 &info, &len);
1360 struct bpf_map_info info = {};
1361 __u32 len = sizeof(info);
1369 fd = map_parse_fd_and_info(&argc, &argv, &info, &len);
1373 err = alloc_key_value(&info, &key, &value);
1391 print_key_value(&info, key, value);