On Wed, Oct 12, 2022 at 11:50 AM Jerin Jacob <jerinjac...@gmail.com> wrote:
> On Thu, Oct 6, 2022 at 1:27 PM David Marchand <david.march...@redhat.com> 
> wrote:
> > On Thu, Oct 6, 2022 at 9:50 AM Andrew Rybchenko
> > <andrew.rybche...@oktetlabs.ru> wrote:
> > > >>>>> diff --git a/lib/ethdev/version.map b/lib/ethdev/version.map index
> > > >>>>> 3def7bfd24..e3d603cc9a 100644
> > > >>>>> --- a/lib/ethdev/version.map
> > > >>>>> +++ b/lib/ethdev/version.map
> > > >>>>> @@ -288,6 +288,150 @@ EXPERIMENTAL {
> > > >>>>>
> > > >>>>>           # added in 22.11
> > > >>>>>           rte_flow_async_action_handle_query;
> > > >>>>> + __rte_eth_trace_add_first_rx_callback;
> > > >>>>
> > > >>>> Why is it in EXPERIMENTAL section, but not INTERNAL?
> > > >>> [Ankur] Because the functions for which trace is added are not 
> > > >>> internal
> > > >> functions.
> > > >>
> > > >> Sorry, but I don't understand. I agree that tracing of public inline 
> > > >> functions
> > > >> must be part of ABI, but why everything else should be a part of ABI?
> > > > [Ankur] I see that there are some already existing trace functions 
> > > > added in EXPERIMENTAL in version.map like __rte_ethdev_trace_configure, 
> > > > __rte_ethdev_trace_rxq_setup. So not sure will it be internal or 
> > > > experimental.
> > > >
> > > > But you are right the trace function will not be called as a public 
> > > > api. Should I make the newly added trace as internal then?
> > >
> > > @David, do I understand correctly that trace points in
> > > EXPERIMENTAL is a mistake in majority of cases?
> >
> > The trace point global variables (__rte_trace_foo)  are only exposed
> > for inline helpers that might call their associated trace point helper
> > (rte_trace_foo()).
> > An application is not supposed to directly manipulate them.
> > Any tp manipulation should be through the rte_trace_point_* API.
> >
> > Jerin, do you see any other uses for them?
>
> No.  Expect the following ones, which can be used by application directly.
>
>         __rte_eal_trace_generic_float;
>         __rte_eal_trace_generic_func;
>         __rte_eal_trace_generic_i16;
>         __rte_eal_trace_generic_i32;
>         __rte_eal_trace_generic_i64;
>         __rte_eal_trace_generic_i8;
>         __rte_eal_trace_generic_int;
>         __rte_eal_trace_generic_long;
>         __rte_eal_trace_generic_ptr;
>         __rte_eal_trace_generic_str;
>         __rte_eal_trace_generic_u16;
>         __rte_eal_trace_generic_u32;
>         __rte_eal_trace_generic_u64;
>         __rte_eal_trace_generic_u8;
Indeed, that's something I discussed offlist after with Andrew but
forgot to put back on the mailing list.
As long as the trace point is called from a helper in a header exposed
to applications, we can't mark the trace point variable internal.


-- 
David Marchand

Reply via email to