[DTrace-devel] [PATCH] provider: split off tracepoint provider function defs in their own header file

Kris Van Hees kris.van.hees at oracle.com
Tue May 16 16:39:49 UTC 2023


Signed-off-by: Kris Van Hees <kris.van.hees at oracle.com>
---
 libdtrace/dt_prov_dtrace.c  |  2 +-
 libdtrace/dt_prov_fbt.c     |  2 +-
 libdtrace/dt_prov_rawtp.c   |  2 +-
 libdtrace/dt_prov_sdt.c     |  2 +-
 libdtrace/dt_prov_syscall.c |  2 +-
 libdtrace/dt_prov_uprobe.c  |  2 +-
 libdtrace/dt_provider.h     | 34 -----------------------
 libdtrace/dt_provider_tp.c  |  2 +-
 libdtrace/dt_provider_tp.h  | 55 +++++++++++++++++++++++++++++++++++++
 9 files changed, 62 insertions(+), 41 deletions(-)
 create mode 100644 libdtrace/dt_provider_tp.h

diff --git a/libdtrace/dt_prov_dtrace.c b/libdtrace/dt_prov_dtrace.c
index e03d6c4b..939ab1cc 100644
--- a/libdtrace/dt_prov_dtrace.c
+++ b/libdtrace/dt_prov_dtrace.c
@@ -14,7 +14,7 @@
 
 #include "dt_dctx.h"
 #include "dt_cg.h"
-#include "dt_provider.h"
+#include "dt_provider_tp.h"
 #include "dt_probe.h"
 #include "uprobes.h"
 
diff --git a/libdtrace/dt_prov_fbt.c b/libdtrace/dt_prov_fbt.c
index d43a0e56..19917560 100644
--- a/libdtrace/dt_prov_fbt.c
+++ b/libdtrace/dt_prov_fbt.c
@@ -33,7 +33,7 @@
 
 #include "dt_dctx.h"
 #include "dt_cg.h"
-#include "dt_provider.h"
+#include "dt_provider_tp.h"
 #include "dt_probe.h"
 #include "dt_pt_regs.h"
 
diff --git a/libdtrace/dt_prov_rawtp.c b/libdtrace/dt_prov_rawtp.c
index 55caaed8..9148e715 100644
--- a/libdtrace/dt_prov_rawtp.c
+++ b/libdtrace/dt_prov_rawtp.c
@@ -33,7 +33,7 @@
 #include "dt_bpf.h"
 #include "dt_cg.h"
 #include "dt_bpf.h"
-#include "dt_provider.h"
+#include "dt_provider_tp.h"
 #include "dt_probe.h"
 #include "dt_pt_regs.h"
 
diff --git a/libdtrace/dt_prov_sdt.c b/libdtrace/dt_prov_sdt.c
index 606ac25f..0bbe0fa8 100644
--- a/libdtrace/dt_prov_sdt.c
+++ b/libdtrace/dt_prov_sdt.c
@@ -30,7 +30,7 @@
 #include "dt_dctx.h"
 #include "dt_cg.h"
 #include "dt_bpf.h"
-#include "dt_provider.h"
+#include "dt_provider_tp.h"
 #include "dt_probe.h"
 #include "dt_pt_regs.h"
 
diff --git a/libdtrace/dt_prov_syscall.c b/libdtrace/dt_prov_syscall.c
index 6b40bdcc..ff07d671 100644
--- a/libdtrace/dt_prov_syscall.c
+++ b/libdtrace/dt_prov_syscall.c
@@ -31,7 +31,7 @@
 
 #include "dt_dctx.h"
 #include "dt_cg.h"
-#include "dt_provider.h"
+#include "dt_provider_tp.h"
 #include "dt_probe.h"
 #include "dt_pt_regs.h"
 
diff --git a/libdtrace/dt_prov_uprobe.c b/libdtrace/dt_prov_uprobe.c
index f2b0707b..929aa3f6 100644
--- a/libdtrace/dt_prov_uprobe.c
+++ b/libdtrace/dt_prov_uprobe.c
@@ -16,7 +16,7 @@
 #include "dt_dctx.h"
 #include "dt_cg.h"
 #include "dt_list.h"
-#include "dt_provider.h"
+#include "dt_provider_tp.h"
 #include "dt_probe.h"
 #include "dt_pid.h"
 #include "dt_string.h"
diff --git a/libdtrace/dt_provider.h b/libdtrace/dt_provider.h
index 51a691cc..14abc518 100644
--- a/libdtrace/dt_provider.h
+++ b/libdtrace/dt_provider.h
@@ -18,18 +18,6 @@
 extern "C" {
 #endif
 
-/*
- * Tracepoint group naming format for DTrace providers.  Providers may append
- * to this format string as needed.
- *
- * GROUP_DATA provides the necessary data items to populate the format string
- * (PID of the dtrace process and the provider name).  GROUP_SFMT is like
- * GROUP_FMT, but for sscanf().
- */
-#define GROUP_FMT	"dt_%d_%s"
-#define GROUP_SFMT	"dt_%d_%ms"
-#define GROUP_DATA	getpid(), prvname
-
 struct dt_probe;
 
 /*
@@ -104,28 +92,6 @@ typedef struct dt_provider {
 	uint_t pv_flags;		/* flags (see below) */
 } dt_provider_t;
 
-typedef struct tp_probe tp_probe_t;
-
-extern tp_probe_t *dt_tp_alloc(dtrace_hdl_t *dtp);
-extern int dt_tp_attach(dtrace_hdl_t *dtp, tp_probe_t *tpp, int bpf_fd);
-extern int dt_tp_is_created(const tp_probe_t *tpp);
-extern int dt_tp_event_info(dtrace_hdl_t *dtp, FILE *f, int skip,
-			    tp_probe_t *tpp, int *argcp,
-			    dt_argdesc_t **argvp);
-extern void dt_tp_detach(dtrace_hdl_t *dtp, tp_probe_t *tpp);
-extern void dt_tp_destroy(dtrace_hdl_t *dtp, tp_probe_t *tpp);
-
-extern struct dt_probe *dt_tp_probe_insert(dtrace_hdl_t *dtp,
-					   dt_provider_t *prov,
-					   const char *prv, const char *mod,
-					   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);
-
 #define	DT_PROVIDER_INTF	0x1	/* provider interface declaration */
 #define	DT_PROVIDER_IMPL	0x2	/* provider implementation is loaded */
 #define	DT_PROVIDER_PID		0x4	/* provider is a PID provider */
diff --git a/libdtrace/dt_provider_tp.c b/libdtrace/dt_provider_tp.c
index b42c244f..f3e03323 100644
--- a/libdtrace/dt_provider_tp.c
+++ b/libdtrace/dt_provider_tp.c
@@ -13,7 +13,7 @@
 #include <linux/perf_event.h>
 
 #include "dt_bpf.h"
-#include "dt_provider.h"
+#include "dt_provider_tp.h"
 #include "dt_probe.h"
 #include "dt_impl.h"
 
diff --git a/libdtrace/dt_provider_tp.h b/libdtrace/dt_provider_tp.h
new file mode 100644
index 00000000..8bc432b7
--- /dev/null
+++ b/libdtrace/dt_provider_tp.h
@@ -0,0 +1,55 @@
+/*
+ * Oracle Linux DTrace.
+ * Copyright (c) 2023, Oracle and/or its affiliates. All rights reserved.
+ * Licensed under the Universal Permissive License v 1.0 as shown at
+ * http://oss.oracle.com/licenses/upl.
+ */
+
+#ifndef	_DT_PROVIDER_TP_H
+#define	_DT_PROVIDER_TP_H
+
+#include <dt_provider.h>
+
+#ifdef	__cplusplus
+extern "C" {
+#endif
+
+/*
+ * Tracepoint group naming format for DTrace providers.  Providers may append
+ * to this format string as needed.
+ *
+ * GROUP_DATA provides the necessary data items to populate the format string
+ * (PID of the dtrace process and the provider name).  GROUP_SFMT is like
+ * GROUP_FMT, but for sscanf().
+ */
+#define GROUP_FMT	"dt_%d_%s"
+#define GROUP_SFMT	"dt_%d_%ms"
+#define GROUP_DATA	getpid(), prvname
+
+typedef struct tp_probe tp_probe_t;
+
+extern tp_probe_t *dt_tp_alloc(dtrace_hdl_t *dtp);
+extern int dt_tp_attach(dtrace_hdl_t *dtp, tp_probe_t *tpp, int bpf_fd);
+extern int dt_tp_is_created(const tp_probe_t *tpp);
+extern int dt_tp_event_info(dtrace_hdl_t *dtp, FILE *f, int skip,
+			    tp_probe_t *tpp, int *argcp,
+			    dt_argdesc_t **argvp);
+extern void dt_tp_detach(dtrace_hdl_t *dtp, tp_probe_t *tpp);
+extern void dt_tp_destroy(dtrace_hdl_t *dtp, tp_probe_t *tpp);
+
+extern struct dt_probe *dt_tp_probe_insert(dtrace_hdl_t *dtp,
+					   dt_provider_t *prov,
+					   const char *prv, const char *mod,
+					   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);
+
+#ifdef	__cplusplus
+}
+#endif
+
+#endif	/* _DT_PROVIDER_TP_H */
-- 
2.40.1




More information about the DTrace-devel mailing list