[DTrace-devel] [PATCH 1/4] cg, providers: refactor clearing probe arguments
Kris Van Hees
kris.van.hees at oracle.com
Thu Dec 18 19:23:34 UTC 2025
On Thu, Dec 18, 2025 at 02:12:01PM -0500, Eugene Loh wrote:
> Two things...
>
> On 12/17/25 00:09, Kris Van Hees via DTrace-devel wrote:
>
> > Signed-off-by: Kris Van Hees <kris.van.hees at oracle.com>
> > ---
> > libdtrace/dt_cg.c | 34 +++++++++++++++++++++++++++++++---
> > libdtrace/dt_cg.h | 1 +
> > libdtrace/dt_prov_cpc.c | 17 -----------------
> > libdtrace/dt_prov_dtrace.c | 8 ++------
> > libdtrace/dt_prov_profile.c | 23 +----------------------
> > libdtrace/dt_prov_syscall.c | 10 ++--------
>
> Is there also another clean-up site in dt_prov_sdt.c in trampoline()?
Ah right, good catch.
> > diff --git a/libdtrace/dt_cg.c b/libdtrace/dt_cg.c
> > @@ -454,6 +454,32 @@ dt_cg_tramp_copy_regs(dt_pcb_t *pcb)
> > }
> > }
> > +/*
> > + * Clear the content of the 'argv' member of the machine state, from the given
> > + * index (idx).
> > + *
> > + * The caller must ensure that %r7 contains the value set by the
> > + * dt_cg_tramp_prologue*() functions.
> > + */
> > +void
> > +dt_cg_tramp_clear_argv(dt_pcb_t *pcb, int idx)
> > +{
> > + dt_irlist_t *dlp = &pcb->pcb_ir;
> > + int i, argc = ARRAY_SIZE(((dt_mstate_t *)0)->argv);
> > +
> > + if (idx >= argc)
> > + return;
> > +
> > + /*
> > + * memset(&dctx->mst->argv[idx], 0, sizeof(dt_pt_regs);
> > + * // stdw [%7 + DMST_ARG(idx)], 0
> > + * // stdw [%7 + DMST_ARG(idx + 1)], 0
> > + * // (...)
> > + */
>
> Actually, the code is clearer and more concise than the comment. Plus, the
> comment is wrong? What's sizeof(dt_pt_regs) doing in there? Just drop the
> "memset" comment block. The two lines of code speak for themselves.
Good point. Removing.
v2 on the way.
> > + for (i = idx; i < argc; i++)
> > + emit(dlp, BPF_STORE_IMM(BPF_DW, BPF_REG_7, DMST_ARG(i), 0));
> > +}
More information about the DTrace-devel
mailing list