[DTrace-devel] [PATCH 06/15] Implement dt_bpf_raw_tracepoint_open()
Kris Van Hees
kris.van.hees at oracle.com
Thu Feb 23 07:23:58 UTC 2023
Signed-off-by: Kris Van Hees <kris.van.hees at oracle.com>
---
libdtrace/dt_bpf.c | 15 +++++++++++++++
libdtrace/dt_bpf.h | 1 +
2 files changed, 16 insertions(+)
diff --git a/libdtrace/dt_bpf.c b/libdtrace/dt_bpf.c
index 6587ea95..3150d977 100644
--- a/libdtrace/dt_bpf.c
+++ b/libdtrace/dt_bpf.c
@@ -300,6 +300,21 @@ dt_bpf_map_update_inner(int fd, const void *okey, const void *ikey,
return rc;
}
+/*
+ * Associate a BPF program (by fd) with a raw tracepoint.
+ */
+int
+dt_bpf_raw_tracepoint_open(const void *tp, int fd)
+{
+ union bpf_attr attr;
+
+ memset(&attr, 0, sizeof(attr));
+ attr.raw_tracepoint.name = (uint64_t)(unsigned long)tp;
+ attr.raw_tracepoint.prog_fd = fd;
+
+ return bpf(BPF_RAW_TRACEPOINT_OPEN, &attr);
+}
+
static int
have_helper(uint32_t func_id)
{
diff --git a/libdtrace/dt_bpf.h b/libdtrace/dt_bpf.h
index ab3862aa..9b6127d7 100644
--- a/libdtrace/dt_bpf.h
+++ b/libdtrace/dt_bpf.h
@@ -56,6 +56,7 @@ extern int dt_bpf_map_lookup_inner(int fd, const void *okey, const void *ikey,
void *val);
extern int dt_bpf_map_update_inner(int fd, const void *okey, const void *ikey,
const void *val);
+extern int dt_bpf_raw_tracepoint_open(const void *tp, int fd);
extern int dt_bpf_load_progs(struct dtrace_hdl *, uint_t);
extern void dt_bpf_init_helpers(struct dtrace_hdl *dtp);
--
2.39.1
More information about the DTrace-devel
mailing list