[DTrace-devel] [PATCH 13/17] dtprobed, usdt parser: add support for ELF notes-based USDT

Kris Van Hees kris.van.hees at oracle.com
Sat Jun 7 23:44:48 UTC 2025


On Sat, Jun 07, 2025 at 07:49:29PM +0100, Nick Alcock wrote:
> On 7 Jun 2025, Kris Van Hees verbalised:
> 
> > Signed-off-by: Kris Van Hees <kris.van.hees at oracle.com>
> 
> Reviewed-by: Nick Alcock <nick.alcock at oracle.com>

Thanks.

> Modulo this piece of utter pedantry:
> 
> > +	 *   rc = 1: All blocks written successfully.
> > +	 *   rc = 0: Some blocks not written.
> > +	 *   rc = -1: An erorr happened (some blocks not written).
> 
> Erorr is an erorr!

Thanks.

> > +		if (prp->fun != NULL) {
> > +			ptp->next = prp->next;
> > +			ptp->nargc = prp->nargc;
> > +			ptp->nargs = prp->nargs;
> > +			ptp->nargsz = prp->nargsz;
> > +			ptp->xargc = prp->xargc;
> > +			ptp->xargs = prp->xargs;
> > +			ptp->xargsz = prp->xargsz;
> > +			ptp->xmap = prp->xmap;
> > +			prp->next = ptp;
> > +			prp->ntp++;
> > +		} else {
> > +			dt_htab_delete(prbmap, ptp);
> > +			dt_htab_insert(pvp->pmap, ptp);
> > +			ptp->ntp = 1;
> > +			ptp->nargc = prp->nargc;
> > +			ptp->nargs = prp->nargs;
> > +			ptp->nargsz = prp->nargsz;
> > +			ptp->xargc = prp->xargc;
> > +			ptp->xargs = prp->xargs;
> > +			ptp->xargsz = prp->xargsz;
> > +			ptp->xmap = prp->xmap;
> > +			pvp->probec++;
> > +		}
> > +	}
> > +
> > +prvit = NULL;
> > +while ((pvp = dt_htab_next(prvmap, &prvit)) != NULL) {
> > +  dt_htab_next_t	*prbit = NULL;
> > +  dt_probe_t		*prp;
> > +
> > +  dt_dbg_usdt("    Provider '%s' with %d probe%s:\n", pvp->name, pvp->probec, pvp->probec == 1 ? "" : "s");
> > +  while ((prp = dt_htab_next(pvp->pmap, &prbit)) != NULL) {
> > +    dt_dbg_usdt("      Probe %s:%s:%s:%s (off %x)\n", prp->prv, prp->mod, prp->fun ? prp->fun : "", prp->prb, prp->fun ? prp->off : -1);
> > +    while ((prp = prp->next) != NULL)
> > +      dt_dbg_usdt("        Probe %s:%s:%s:%s (off %x)\n", prp->prv, prp->mod, prp->fun ? prp->fun : "", prp->prb, prp->fun ? prp->off : -1);
> > +  }
> > +}
> > +
> > +	/* Emit any provider that has tracepoints. */
> > +	prvit = NULL;
> > +	while ((pvp = dt_htab_next(prvmap, &prvit)) != NULL) {
> > +		if (pvp->probec > 0 && emit_provider(out, dhp, pvp) == -1)
> > +			goto err;
> > +	}
> > +
> > +	goto out;
> 
> Going by the indentation, the outdented bit looks like debugging code
> you either forgot to remove, or forgot to reindent :)

Ah yes, thanks.



More information about the DTrace-devel mailing list