Lines Matching refs:info

89 static int prep_prog_info(struct bpf_prog_info *const info, enum dump_mode mode,
97 holder.jited_prog_len = info->jited_prog_len;
98 needed += info->jited_prog_len;
100 holder.xlated_prog_len = info->xlated_prog_len;
101 needed += info->xlated_prog_len;
104 holder.nr_jited_ksyms = info->nr_jited_ksyms;
105 needed += info->nr_jited_ksyms * sizeof(__u64);
107 holder.nr_jited_func_lens = info->nr_jited_func_lens;
108 needed += info->nr_jited_func_lens * sizeof(__u32);
110 holder.nr_func_info = info->nr_func_info;
111 holder.func_info_rec_size = info->func_info_rec_size;
112 needed += info->nr_func_info * info->func_info_rec_size;
114 holder.nr_line_info = info->nr_line_info;
115 holder.line_info_rec_size = info->line_info_rec_size;
116 needed += info->nr_line_info * info->line_info_rec_size;
118 holder.nr_jited_line_info = info->nr_jited_line_info;
119 holder.jited_line_info_rec_size = info->jited_line_info_rec_size;
120 needed += info->nr_jited_line_info * info->jited_line_info_rec_size;
155 *info = holder;
192 struct bpf_prog_info info = {};
193 __u32 len = sizeof(info);
198 info.nr_map_ids = num_maps;
199 info.map_ids = ptr_to_u64(map_ids);
201 err = bpf_prog_get_info_by_fd(fd, &info, &len);
202 if (err || !info.nr_map_ids)
208 for (i = 0; i < info.nr_map_ids; i++)
213 for (i = 0; i < info.nr_map_ids; i++)
215 i == info.nr_map_ids - 1 ? "" : ",");
413 static void print_prog_header_json(struct bpf_prog_info *info, int fd)
418 jsonw_uint_field(json_wtr, "id", info->id);
419 prog_type_str = libbpf_bpf_prog_type_str(info->type);
424 jsonw_uint_field(json_wtr, "type", info->type);
426 if (*info->name) {
427 get_prog_full_name(info, fd, prog_name, sizeof(prog_name));
433 info->tag[0], info->tag[1], info->tag[2], info->tag[3],
434 info->tag[4], info->tag[5], info->tag[6], info->tag[7]);
436 jsonw_bool_field(json_wtr, "gpl_compatible", info->gpl_compatible);
437 if (info->run_time_ns) {
438 jsonw_uint_field(json_wtr, "run_time_ns", info->run_time_ns);
439 jsonw_uint_field(json_wtr, "run_cnt", info->run_cnt);
441 if (info->recursion_misses)
442 jsonw_uint_field(json_wtr, "recursion_misses", info->recursion_misses);
445 static void print_prog_json(struct bpf_prog_info *info, int fd)
450 print_prog_header_json(info, fd);
451 print_dev_json(info->ifindex, info->netns_dev, info->netns_ino);
453 if (info->load_time) {
456 print_boot_time(info->load_time, buf, sizeof(buf));
461 jsonw_uint_field(json_wtr, "uid", info->created_by_uid);
464 jsonw_uint_field(json_wtr, "bytes_xlated", info->xlated_prog_len);
466 if (info->jited_prog_len) {
468 jsonw_uint_field(json_wtr, "bytes_jited", info->jited_prog_len);
478 if (info->nr_map_ids)
479 show_prog_maps(fd, info->nr_map_ids);
481 if (info->btf_id)
482 jsonw_int_field(json_wtr, "btf_id", info->btf_id);
489 hashmap__for_each_key_entry(prog_table, entry, info->id)
494 emit_obj_refs_json(refs_table, info->id, json_wtr);
496 show_prog_metadata(fd, info->nr_map_ids);
501 static void print_prog_header_plain(struct bpf_prog_info *info, int fd)
506 printf("%u: ", info->id);
507 prog_type_str = libbpf_bpf_prog_type_str(info->type);
511 printf("type %u ", info->type);
513 if (*info->name) {
514 get_prog_full_name(info, fd, prog_name, sizeof(prog_name));
519 fprint_hex(stdout, info->tag, BPF_TAG_SIZE, "");
520 print_dev_plain(info->ifindex, info->netns_dev, info->netns_ino);
521 printf("%s", info->gpl_compatible ? " gpl" : "");
522 if (info->run_time_ns)
524 info->run_time_ns, info->run_cnt);
525 if (info->recursion_misses)
526 printf(" recursion_misses %lld", info->recursion_misses);
530 static void print_prog_plain(struct bpf_prog_info *info, int fd)
534 print_prog_header_plain(info, fd);
536 if (info->load_time) {
539 print_boot_time(info->load_time, buf, sizeof(buf));
542 printf("\tloaded_at %s uid %u\n", buf, info->created_by_uid);
545 printf("\txlated %uB", info->xlated_prog_len);
547 if (info->jited_prog_len)
548 printf(" jited %uB", info->jited_prog_len);
557 if (info->nr_map_ids)
558 show_prog_maps(fd, info->nr_map_ids);
563 hashmap__for_each_key_entry(prog_table, entry, info->id)
567 if (info->btf_id)
568 printf("\n\tbtf_id %d", info->btf_id);
570 emit_obj_refs_plain(refs_table, info->id, "\n\tpids ");
574 show_prog_metadata(fd, info->nr_map_ids);
579 struct bpf_prog_info info = {};
580 __u32 len = sizeof(info);
583 err = bpf_prog_get_info_by_fd(fd, &info, &len);
585 p_err("can't get prog info: %s", strerror(errno));
590 print_prog_json(&info, fd);
592 print_prog_plain(&info, fd);
697 prog_dump(struct bpf_prog_info *info, enum dump_mode mode,
712 if (info->jited_prog_len == 0 || !info->jited_prog_insns) {
716 buf = u64_to_ptr(info->jited_prog_insns);
717 member_len = info->jited_prog_len;
719 if (info->xlated_prog_len == 0 || !info->xlated_prog_insns) {
723 buf = u64_to_ptr(info->xlated_prog_insns);
724 member_len = info->xlated_prog_len;
727 if (info->btf_id) {
728 btf = btf__load_from_kernel_by_id(info->btf_id);
735 func_info = u64_to_ptr(info->func_info);
737 if (info->nr_line_info) {
738 prog_linfo = bpf_prog_linfo__new(info);
764 if (info->ifindex) {
765 name = ifindex_to_arch(info->ifindex, info->netns_dev,
766 info->netns_ino, &disasm_opt);
771 if (info->nr_jited_func_lens && info->jited_func_lens) {
779 if (info->nr_jited_ksyms) {
781 ksyms = u64_to_ptr(info->jited_ksyms);
787 lens = u64_to_ptr(info->jited_func_lens);
788 for (i = 0; i < info->nr_jited_func_lens; i++) {
800 record = func_info + i * info->func_info_rec_size;
845 dd.nr_jited_ksyms = info->nr_jited_ksyms;
846 dd.jited_ksyms = u64_to_ptr(info->jited_ksyms);
849 dd.finfo_rec_size = info->func_info_rec_size;
871 struct bpf_prog_info info;
872 __u32 info_len = sizeof(info);
954 memset(&info, 0, sizeof(info));
956 err = bpf_prog_get_info_by_fd(fds[i], &info, &info_len);
958 p_err("can't get prog info: %s", strerror(errno));
962 err = prep_prog_info(&info, mode, &info_data, &info_data_sz);
968 err = bpf_prog_get_info_by_fd(fds[i], &info, &info_len);
970 p_err("can't get prog info: %s", strerror(errno));
976 print_prog_header_json(&info, fds[i]);
979 print_prog_header_plain(&info, fds[i]);
982 err = prog_dump(&info, mode, filepath, opcodes, visual, linum);
2192 struct bpf_prog_info info = {};
2193 __u32 info_len = sizeof(info);
2200 err = bpf_prog_get_info_by_fd(tgt_fd, &info, &info_len);
2202 p_err("failed to get info for prog FD %d", tgt_fd);
2206 if (info.btf_id == 0) {
2211 func_info_rec_size = info.func_info_rec_size;
2212 if (info.nr_func_info == 0) {
2217 memset(&info, 0, sizeof(info));
2218 info.nr_func_info = 1;
2219 info.func_info_rec_size = func_info_rec_size;
2220 info.func_info = ptr_to_u64(&func_info);
2222 err = bpf_prog_get_info_by_fd(tgt_fd, &info, &info_len);
2228 btf = btf__load_from_kernel_by_id(info.btf_id);
2237 info.btf_id, func_info.type_id);