[DTrace-devel] [PATCH 10/16] Export dt_cg_tramp_call_clauses() and dt_cg_tramp_return()
Kris Van Hees
kris.van.hees at oracle.com
Thu Mar 18 21:54:43 PDT 2021
This patch also makes the probe argument to dt_cg_tramp_call_clauses()
const since that is what dt_probe_clause_iter() enforces.
The dt_cg_tramp_call_clauses() and dt_cg_tramp_return() functions
were only being used from dt_cg_tramp_epilogue() and its *_advance()
variant. More complex providers have a need for calling them directly
to have more control over the trampoline epilogue creation.
Signed-off-by: Kris Van Hees <kris.van.hees at oracle.com>
---
libdtrace/dt_cg.c | 7 ++++---
libdtrace/dt_cg.h | 4 ++++
2 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/libdtrace/dt_cg.c b/libdtrace/dt_cg.c
index e6a7c7fc..9ffc5834 100644
--- a/libdtrace/dt_cg.c
+++ b/libdtrace/dt_cg.c
@@ -194,8 +194,9 @@ dt_cg_call_clause(dtrace_hdl_t *dtp, dt_ident_t *idp, dt_clause_arg_t *arg)
return 0;
}
-static void
-dt_cg_tramp_call_clauses(dt_pcb_t *pcb, dt_probe_t *prp, dt_activity_t act)
+void
+dt_cg_tramp_call_clauses(dt_pcb_t *pcb, const dt_probe_t *prp,
+ dt_activity_t act)
{
dt_irlist_t *dlp = &pcb->pcb_ir;
dt_clause_arg_t arg = { dlp, act, pcb->pcb_exitlbl };
@@ -204,7 +205,7 @@ dt_cg_tramp_call_clauses(dt_pcb_t *pcb, dt_probe_t *prp, dt_activity_t act)
(dt_clause_f *)dt_cg_call_clause, &arg);
}
-static void
+void
dt_cg_tramp_return(dt_pcb_t *pcb)
{
dt_irlist_t *dlp = &pcb->pcb_ir;
diff --git a/libdtrace/dt_cg.h b/libdtrace/dt_cg.h
index daeaa9a1..be430c28 100644
--- a/libdtrace/dt_cg.h
+++ b/libdtrace/dt_cg.h
@@ -10,6 +10,7 @@
#include <dt_as.h>
#include <dt_pcb.h>
+#include <dt_probe.h>
#include <dt_state.h>
#ifdef __cplusplus
@@ -21,6 +22,9 @@ extern void dt_cg_xsetx(dt_irlist_t *, dt_ident_t *, uint_t, int, uint64_t);
extern dt_irnode_t *dt_cg_node_alloc(uint_t, struct bpf_insn);
extern void dt_cg_tramp_prologue_act(dt_pcb_t *pcb, dt_activity_t act);
extern void dt_cg_tramp_prologue(dt_pcb_t *pcb);
+extern void dt_cg_tramp_call_clauses(dt_pcb_t *pcb, const dt_probe_t *prp,
+ dt_activity_t act);
+extern void dt_cg_tramp_return(dt_pcb_t *pcb);
extern void dt_cg_tramp_epilogue(dt_pcb_t *pcb);
extern void dt_cg_tramp_epilogue_advance(dt_pcb_t *pcb, dt_activity_t act);
extern void dt_cg_tramp_error(dt_pcb_t *pcb);
--
2.28.0
More information about the DTrace-devel
mailing list