[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