[DTrace-devel] [PATCH 1/3] add mechanism for providers to do cleanup

eugene.loh at oracle.com eugene.loh at oracle.com
Thu Mar 26 15:30:26 PDT 2020


From: Eugene Loh <eugene.loh at oracle.com>

Signed-off-by: Eugene Loh <eugene.loh at oracle.com>
---
 libdtrace/dt_provider.c | 3 +++
 libdtrace/dt_provider.h | 1 +
 2 files changed, 4 insertions(+)

diff --git a/libdtrace/dt_provider.c b/libdtrace/dt_provider.c
index edb87474..60a4b751 100644
--- a/libdtrace/dt_provider.c
+++ b/libdtrace/dt_provider.c
@@ -83,6 +83,9 @@ dt_provider_destroy(dtrace_hdl_t *dtp, dt_provider_t *pvp)
 
 	assert(pvp->pv_hdl == dtp);
 
+	if (pvp->impl && pvp->impl->cleanup)
+		pvp->impl->cleanup(dtp);
+
 	h = dt_strtab_hash(pvp->desc.dtvd_name, NULL) % dtp->dt_provbuckets;
 	pp = &dtp->dt_provs[h];
 
diff --git a/libdtrace/dt_provider.h b/libdtrace/dt_provider.h
index c2bc730a..9d1e05f0 100644
--- a/libdtrace/dt_provider.h
+++ b/libdtrace/dt_provider.h
@@ -54,6 +54,7 @@ typedef struct dt_provimpl {
 			  int *idp, int *argcp, dt_argdesc_t **argvp);
 	void (*trampoline)(dt_pcb_t *pcb,	/* generate BPF trampoline */
 			   int haspred);
+	void (*cleanup)(dtrace_hdl_t *dtp);	/* cleanup */
 } dt_provimpl_t;
 
 extern int tp_event_info(dtrace_hdl_t *dtp, FILE *f, int skip, int *idp,
-- 
2.18.2




More information about the DTrace-devel mailing list