bpftool: Display missed count for kprobe_multi link
authorJiri Olsa <jolsa@kernel.org>
Wed, 20 Sep 2023 21:31:41 +0000 (23:31 +0200)
committerAndrii Nakryiko <andrii@kernel.org>
Mon, 25 Sep 2023 23:37:44 +0000 (16:37 -0700)
Adding 'missed' field to display missed counts for kprobes
attached by kprobe multi link, like:

  # bpftool link
  5: kprobe_multi  prog 76
          kprobe.multi  func_cnt 1  missed 1
          addr             func [module]
          ffffffffa039c030 fp3_test [fprobe_test]

  # bpftool link -jp
  [{
          "id": 5,
          "type": "kprobe_multi",
          "prog_id": 76,
          "retprobe": false,
          "func_cnt": 1,
          "missed": 1,
          "funcs": [{
                  "addr": 18446744072102723632,
                  "func": "fp3_test",
                  "module": "fprobe_test"
              }
          ]
      }
  ]

Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Reviewed-by: Quentin Monnet <quentin@isovalent.com>
Link: https://lore.kernel.org/bpf/20230920213145.1941596-6-jolsa@kernel.org
tools/bpf/bpftool/link.c

index 2e5c231e08ac795d73dad72eb968f1b4ece1611d..d15d74cd1bedbbe1c67f36350406e7ca6e363d99 100644 (file)
@@ -265,6 +265,7 @@ show_kprobe_multi_json(struct bpf_link_info *info, json_writer_t *wtr)
        jsonw_bool_field(json_wtr, "retprobe",
                         info->kprobe_multi.flags & BPF_F_KPROBE_MULTI_RETURN);
        jsonw_uint_field(json_wtr, "func_cnt", info->kprobe_multi.count);
+       jsonw_uint_field(json_wtr, "missed", info->kprobe_multi.missed);
        jsonw_name(json_wtr, "funcs");
        jsonw_start_array(json_wtr);
        addrs = u64_to_ptr(info->kprobe_multi.addrs);
@@ -641,6 +642,8 @@ static void show_kprobe_multi_plain(struct bpf_link_info *info)
        else
                printf("\n\tkprobe.multi  ");
        printf("func_cnt %u  ", info->kprobe_multi.count);
+       if (info->kprobe_multi.missed)
+               printf("missed %llu  ", info->kprobe_multi.missed);
        addrs = (__u64 *)u64_to_ptr(info->kprobe_multi.addrs);
        qsort(addrs, info->kprobe_multi.count, sizeof(__u64), cmp_u64);