mirror of
https://github.com/netdata/libbpf.git
synced 2026-04-08 17:49:07 +08:00
bpf: Add multi uprobe link
Adding new multi uprobe link that allows to attach bpf program
to multiple uprobes.
Uprobes to attach are specified via new link_create uprobe_multi
union:
struct {
__aligned_u64 path;
__aligned_u64 offsets;
__aligned_u64 ref_ctr_offsets;
__u32 cnt;
__u32 flags;
} uprobe_multi;
Uprobes are defined for single binary specified in path and multiple
calling sites specified in offsets array with optional reference
counters specified in ref_ctr_offsets array. All specified arrays
have length of 'cnt'.
The 'flags' supports single bit for now that marks the uprobe as
return probe.
Acked-by: Andrii Nakryiko <andrii@kernel.org>
Acked-by: Yafang Shao <laoar.shao@gmail.com>
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Acked-by: Yonghong Song <yonghong.song@linux.dev>
Link: https://lore.kernel.org/r/20230809083440.3209381-4-jolsa@kernel.org
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
committed by
Andrii Nakryiko
parent
8765ef8276
commit
ba4a10d764
@@ -1039,6 +1039,7 @@ enum bpf_attach_type {
|
|||||||
BPF_NETFILTER,
|
BPF_NETFILTER,
|
||||||
BPF_TCX_INGRESS,
|
BPF_TCX_INGRESS,
|
||||||
BPF_TCX_EGRESS,
|
BPF_TCX_EGRESS,
|
||||||
|
BPF_TRACE_UPROBE_MULTI,
|
||||||
__MAX_BPF_ATTACH_TYPE
|
__MAX_BPF_ATTACH_TYPE
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1057,6 +1058,7 @@ enum bpf_link_type {
|
|||||||
BPF_LINK_TYPE_STRUCT_OPS = 9,
|
BPF_LINK_TYPE_STRUCT_OPS = 9,
|
||||||
BPF_LINK_TYPE_NETFILTER = 10,
|
BPF_LINK_TYPE_NETFILTER = 10,
|
||||||
BPF_LINK_TYPE_TCX = 11,
|
BPF_LINK_TYPE_TCX = 11,
|
||||||
|
BPF_LINK_TYPE_UPROBE_MULTI = 12,
|
||||||
MAX_BPF_LINK_TYPE,
|
MAX_BPF_LINK_TYPE,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1190,6 +1192,13 @@ enum {
|
|||||||
BPF_F_KPROBE_MULTI_RETURN = (1U << 0)
|
BPF_F_KPROBE_MULTI_RETURN = (1U << 0)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* link_create.uprobe_multi.flags used in LINK_CREATE command for
|
||||||
|
* BPF_TRACE_UPROBE_MULTI attach type to create return probe.
|
||||||
|
*/
|
||||||
|
enum {
|
||||||
|
BPF_F_UPROBE_MULTI_RETURN = (1U << 0)
|
||||||
|
};
|
||||||
|
|
||||||
/* link_create.netfilter.flags used in LINK_CREATE command for
|
/* link_create.netfilter.flags used in LINK_CREATE command for
|
||||||
* BPF_PROG_TYPE_NETFILTER to enable IP packet defragmentation.
|
* BPF_PROG_TYPE_NETFILTER to enable IP packet defragmentation.
|
||||||
*/
|
*/
|
||||||
@@ -1626,6 +1635,13 @@ union bpf_attr {
|
|||||||
};
|
};
|
||||||
__u64 expected_revision;
|
__u64 expected_revision;
|
||||||
} tcx;
|
} tcx;
|
||||||
|
struct {
|
||||||
|
__aligned_u64 path;
|
||||||
|
__aligned_u64 offsets;
|
||||||
|
__aligned_u64 ref_ctr_offsets;
|
||||||
|
__u32 cnt;
|
||||||
|
__u32 flags;
|
||||||
|
} uprobe_multi;
|
||||||
};
|
};
|
||||||
} link_create;
|
} link_create;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user