[DTrace-devel] [PATCH 07/15] provider: Add support for attaching to raw tracepoints
Kris Van Hees
kris.van.hees at oracle.com
Thu Feb 23 07:24:01 UTC 2023
Signed-off-by: Kris Van Hees <kris.van.hees at oracle.com>
---
libdtrace/dt_provider.h | 2 ++
libdtrace/dt_provider_tp.c | 24 ++++++++++++++++++++++++
2 files changed, 26 insertions(+)
diff --git a/libdtrace/dt_provider.h b/libdtrace/dt_provider.h
index a7f6c95b..21f66a94 100644
--- a/libdtrace/dt_provider.h
+++ b/libdtrace/dt_provider.h
@@ -116,6 +116,8 @@ extern struct dt_probe *dt_tp_probe_insert(dtrace_hdl_t *dtp,
const char *fun, const char *prb);
extern int dt_tp_probe_attach(dtrace_hdl_t *dtp, const struct dt_probe *prp,
int bpf_fd);
+extern int dt_tp_probe_attach_raw(dtrace_hdl_t *dtp, const struct dt_probe *prp,
+ int bpf_fd);
extern void dt_tp_probe_detach(dtrace_hdl_t *dtp, const struct dt_probe *prp);
extern void dt_tp_probe_destroy(dtrace_hdl_t *dtp, void *datap);
diff --git a/libdtrace/dt_provider_tp.c b/libdtrace/dt_provider_tp.c
index 7388bb94..55e62033 100644
--- a/libdtrace/dt_provider_tp.c
+++ b/libdtrace/dt_provider_tp.c
@@ -318,6 +318,30 @@ dt_tp_probe_attach(dtrace_hdl_t *dtp, const dt_probe_t *prp, int bpf_fd)
return dt_tp_attach(dtp, prp->prv_data, bpf_fd);
}
+/*
+ * Convenience function for raw tracepoint-based probe attach.
+ */
+int
+dt_tp_probe_attach_raw(dtrace_hdl_t *dtp, const dt_probe_t *prp, int bpf_fd)
+{
+ tp_probe_t *tpp = prp->prv_data;
+
+ if (tpp->event_id != -1)
+ tpp->event_id = INT_MAX;
+
+ if (tpp->event_fd == -1) {
+ int fd;
+
+ fd = dt_bpf_raw_tracepoint_open(prp->desc->prb, bpf_fd);
+ if (fd < 0)
+ return -errno;
+
+ tpp->event_fd = fd;
+ }
+
+ return 0;
+}
+
/*
* Convenience function for basic tracepoint-based probe detach.
*/
--
2.39.1
More information about the DTrace-devel
mailing list