[DTrace-devel] [PATCH v2 2/4] fbt: clean up fprobe/kprobe support

Eugene Loh eugene.loh at oracle.com
Thu Dec 5 23:31:07 UTC 2024


Reviewed-by: Eugene Loh <eugene.loh at oracle.com>
with the tiniest typo:

On 12/5/24 18:20, Kris Van Hees wrote:
> Instead of leaking dt_fbt_fprobe outside of the FBT provider so that
> there is *something* to represent the FBT provider, use a minimal
> dt_fbt that does the job of providing a hook to the populate function,
> which then will update dt_fbt from dt_fbt_fprobe o dt_fbt_kprobe

s/o /or /

> depending on what implementation is available (fprobe is preferred).
>
> Signed-off-by: Kris Van Hees <kris.van.hees at oracle.com>
> ---
>   libdtrace/dt_prov_fbt.c | 13 ++++++++++---
>   libdtrace/dt_provider.c |  2 +-
>   libdtrace/dt_provider.h |  3 +--
>   3 files changed, 12 insertions(+), 6 deletions(-)
>
> diff --git a/libdtrace/dt_prov_fbt.c b/libdtrace/dt_prov_fbt.c
> index da288401..8d8545c4 100644
> --- a/libdtrace/dt_prov_fbt.c
> +++ b/libdtrace/dt_prov_fbt.c
> @@ -57,6 +57,9 @@ static const dtrace_pattr_t	pattr = {
>   { DTRACE_STABILITY_PRIVATE, DTRACE_STABILITY_PRIVATE, DTRACE_CLASS_ISA },
>   };
>   
> +dt_provimpl_t			dt_fbt_fprobe;
> +dt_provimpl_t			dt_fbt_kprobe;
> +
>   /*
>    * Scan the PROBE_LIST file and add entry and return probes for every function
>    * that is listed.
> @@ -64,7 +67,6 @@ static const dtrace_pattr_t	pattr = {
>   static int populate(dtrace_hdl_t *dtp)
>   {
>   	dt_provider_t		*prv;
> -	dt_provimpl_t		*impl;
>   	FILE			*f;
>   	char			*buf = NULL;
>   	char			*p;
> @@ -73,9 +75,9 @@ static int populate(dtrace_hdl_t *dtp)
>   	dtrace_syminfo_t	sip;
>   	dtrace_probedesc_t	pd;
>   
> -	impl = BPF_HAS(dtp, BPF_FEAT_FENTRY) ? &dt_fbt_fprobe : &dt_fbt_kprobe;
> +	dt_fbt = BPF_HAS(dtp, BPF_FEAT_FENTRY) ? dt_fbt_kprobe : dt_fbt_kprobe;
>   
> -	prv = dt_provider_create(dtp, prvname, impl, &pattr, NULL);
> +	prv = dt_provider_create(dtp, prvname, &dt_fbt, &pattr, NULL);
>   	if (prv == NULL)
>   		return -1;			/* errno already set */
>   
> @@ -463,3 +465,8 @@ dt_provimpl_t	dt_fbt_kprobe = {
>   	.detach		= &kprobe_detach,
>   	.probe_destroy	= &dt_tp_probe_destroy,
>   };
> +
> +dt_provimpl_t	dt_fbt = {
> +	.name		= prvname,
> +	.populate	= &populate,
> +};
> diff --git a/libdtrace/dt_provider.c b/libdtrace/dt_provider.c
> index ca8b53df..1e2e844e 100644
> --- a/libdtrace/dt_provider.c
> +++ b/libdtrace/dt_provider.c
> @@ -30,7 +30,7 @@
>   const dt_provimpl_t *dt_providers[] = {
>   	&dt_dtrace,		/* list dt_dtrace first */
>   	&dt_cpc,
> -	&dt_fbt_fprobe,
> +	&dt_fbt,
>   	&dt_io,
>   	&dt_ip,
>   	&dt_lockstat,
> diff --git a/libdtrace/dt_provider.h b/libdtrace/dt_provider.h
> index 8f143dce..f62137de 100644
> --- a/libdtrace/dt_provider.h
> +++ b/libdtrace/dt_provider.h
> @@ -76,8 +76,7 @@ typedef struct dt_provimpl {
>   /* list dt_dtrace first */
>   extern dt_provimpl_t dt_dtrace;
>   extern dt_provimpl_t dt_cpc;
> -extern dt_provimpl_t dt_fbt_fprobe;
> -extern dt_provimpl_t dt_fbt_kprobe;
> +extern dt_provimpl_t dt_fbt;
>   extern dt_provimpl_t dt_io;
>   extern dt_provimpl_t dt_ip;
>   extern dt_provimpl_t dt_lockstat;



More information about the DTrace-devel mailing list