Re: [DTrace-devel] [PATCH 1/4] cg, providers: refactor clearing probe arguments
Kris Van Hees <[email protected]>
| Newsgroups | dev.linux.lists.dtrace |
|---|---|
| Message-ID | <[email protected]> |
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 <[email protected]> > > --- > > 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)); > > +}