[DTrace-devel] [PATCH v2 15/20] dof: don't emit providers with no probes

Kris Van Hees kris.van.hees at oracle.com
Thu Sep 22 20:39:02 UTC 2022


On Wed, Sep 07, 2022 at 02:00:02PM +0100, Nick Alcock via DTrace-devel wrote:
> Without this, you end up with DOF with a lot of zero-probe providers
> in.  This not only wastes space but causes the DOF to fail validation
> (arguably unnecessarily, but why waste the space in the first place?)
> 
> Signed-off-by: Nick Alcock <nick.alcock at oracle.com>

Reviewed-by: Kris Van Hees <kris.van.hees at oracle.com>

> ---
>  libdtrace/dt_dof.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/libdtrace/dt_dof.c b/libdtrace/dt_dof.c
> index 947d47e58897..be29f0451e50 100644
> --- a/libdtrace/dt_dof.c
> +++ b/libdtrace/dt_dof.c
> @@ -1,6 +1,6 @@
>  /*
>   * Oracle Linux DTrace.
> - * Copyright (c) 2006, 2021, Oracle and/or its affiliates. All rights reserved.
> + * Copyright (c) 2006, 2022, Oracle and/or its affiliates. All rights reserved.
>   * Licensed under the Universal Permissive License v 1.0 as shown at
>   * http://oss.oracle.com/licenses/upl.
>   */
> @@ -426,6 +426,9 @@ dof_add_provider(dt_dof_t *ddo, const dt_provider_t *pvp)
>  	if (pvp->pv_flags & DT_PROVIDER_IMPL)
>  		return; /* ignore providers that are exported by dtrace(7D) */
>  
> +	if (dt_idhash_size(pvp->pv_probes) == 0)
> +		return;	/* don't emit providers with no probes */
> +
>  	nxr = dt_popcb(pvp->pv_xrefs, pvp->pv_xrmax);
>  	dofs = alloca(sizeof(dof_secidx_t) * (nxr + 1));
>  	xr = 1; /* reserve dofs[0] for the provider itself */
> -- 
> 2.37.1.265.g363c192786.dirty
> 
> 
> _______________________________________________
> DTrace-devel mailing list
> DTrace-devel at oss.oracle.com
> https://oss.oracle.com/mailman/listinfo/dtrace-devel



More information about the DTrace-devel mailing list