Adding bpf_link_create support for tracing_multi link with
new tracing_multi record in struct bpf_link_create_opts.

Signed-off-by: Jiri Olsa <[email protected]>
---
 tools/lib/bpf/bpf.c | 9 +++++++++
 tools/lib/bpf/bpf.h | 5 +++++
 2 files changed, 14 insertions(+)

diff --git a/tools/lib/bpf/bpf.c b/tools/lib/bpf/bpf.c
index 5846de364209..6c741df4c311 100644
--- a/tools/lib/bpf/bpf.c
+++ b/tools/lib/bpf/bpf.c
@@ -790,6 +790,15 @@ int bpf_link_create(int prog_fd, int target_fd,
                if (!OPTS_ZEROED(opts, uprobe_multi))
                        return libbpf_err(-EINVAL);
                break;
+       case BPF_TRACE_FENTRY_MULTI:
+       case BPF_TRACE_FEXIT_MULTI:
+       case BPF_TRACE_FSESSION_MULTI:
+               attr.link_create.tracing_multi.ids = (__u64) OPTS_GET(opts, 
tracing_multi.ids, 0);
+               attr.link_create.tracing_multi.cookies = (__u64) OPTS_GET(opts, 
tracing_multi.cookies, 0);
+               attr.link_create.tracing_multi.cnt = OPTS_GET(opts, 
tracing_multi.cnt, 0);
+               if (!OPTS_ZEROED(opts, tracing_multi))
+                       return libbpf_err(-EINVAL);
+               break;
        case BPF_TRACE_RAW_TP:
        case BPF_TRACE_FENTRY:
        case BPF_TRACE_FEXIT:
diff --git a/tools/lib/bpf/bpf.h b/tools/lib/bpf/bpf.h
index 2c8e88ddb674..726a6fa585b3 100644
--- a/tools/lib/bpf/bpf.h
+++ b/tools/lib/bpf/bpf.h
@@ -454,6 +454,11 @@ struct bpf_link_create_opts {
                        __u32 relative_id;
                        __u64 expected_revision;
                } cgroup;
+               struct {
+                       __u32 *ids;
+                       __u64 *cookies;
+                       __u32 cnt;
+               } tracing_multi;
        };
        size_t :0;
 };
-- 
2.53.0


Reply via email to