On Tue, Oct 1, 2024 at 9:45 PM Morten Brørup <m...@smartsharesystems.com> wrote:
>
> > From: Jerin Jacob [mailto:jerinjac...@gmail.com]
> > Sent: Tuesday, 1 October 2024 18.06
> >
> > On Tue, Oct 1, 2024 at 9:32 PM Morten Brørup <m...@smartsharesystems.com>
> > wrote:
> > >
> > > > From: Jerin Jacob [mailto:jerinjac...@gmail.com]
> > > > Sent: Tuesday, 1 October 2024 17.02
> > > >
> > > > On Tue, Oct 1, 2024 at 7:44 PM Morten Brørup
> > <m...@smartsharesystems.com>
> > > > wrote:
> > > > >
> > > > > > From: Jerin Jacob [mailto:jerinjac...@gmail.com]
> > > > > > Sent: Tuesday, 1 October 2024 16.05
> > > > > >
> > > > > > On Tue, Oct 1, 2024 at 7:19 PM Morten Brørup
> > > > <m...@smartsharesystems.com>
> > > > > > wrote:
> > > > > > >
> > > > > > > Jerin,
> > > > > > >
> > > > > > > If you have no further comments, please add review/ack tag,
> > to
> > > > help
> > > > > > Thomas see that the patch has been accepted by the maintainer,
> > and
> > > > can
> > > > > > be merged.
> > > > > >
> > > > > > There was a comment to make the function as
> > rte_trace_is_enabled()
> > > > and
> > > > > > remove internal. The rest looks good to me. I will Ack in the
> > next
> > > > > > version.
> > > > >
> > > > > Perhaps my reply to that comment was unclear... such a public
> > > > function already exists in the previous API:
> > > >
> > > > I see. It was not clear.
> > > >
> > > > >
> > > >
> > https://elixir.bootlin.com/dpdk/v24.07/source/lib/eal/include/rte_trace
> > > > .h#L36
> > > > >
> > > > > That function tells if trace enabled at both build time and
> > runtime,
> > > > and returns false if not.
> > > > >
> > > > > A separate public function to tell if trace is enabled at build
> > time
> > > > seems like overkill to me. Is that what you are asking for?
> > > >
> > > > No. Just use rte_trace_is_enabled() in app/test instead of
> > > > __rte_trace_point_generic_is_enabled() as it is internal.
> > >
> > > Just tested it, and it didn't have the wanted effect.
> > > I think rte_trace_is_enabled() returns false until at least one
> > tracepoint has been enabled, which seems like a good optimization.
> > > But it also means that we cannot use it to replace
> > __rte_trace_point_generic_is_enabled() in test/app, because no
> > tracepoints have been enabled at this point of execution, so it returns
> > false here.
> > >
> > > I looked around in the code, and cannot find a method without looking
> > at internals, or duplicating a test case.
> > >
> > > I could test if rte_trace_point_lookup("app.dpdk.test.tp") returns
> > non-NULL, but that would duplicate the same test in
> > test_trace_points_lookup().
> > >
> > > What do you think...
> > > Keep using internal function __rte_trace_point_generic_is_enabled(),
> > > test rte_trace_point_lookup("app.dpdk.test.tp") != NULL,
> > > or any other idea?
> >
> > How about the following, it is anyway the correct thing to do
> >
> > bool
> > rte_trace_is_enabled(void)
> > {
> >  +       if (__rte_trace_point_generic_is_enabled() == false)
> >   +              return false;
> >         return rte_atomic_load_explicit(&trace.status,
> > rte_memory_order_acquire) != 0;
> > }
> >
>
> It's the opposite that's causing problems:
> Even when built with trace, rte_trace_is_enabled() returns false, because no 
> trace points have been enabled when the test application checks if it should 
> run test cases or not. At this point, trace.status is zero, so it skips 
> testing.
>
> We don't need to add the test for rte_trace_point_generic_is_enabled()==false 
> in rte_trace_is_enabled(), because nothing can increase trace.status if no 
> tracepoints exist. (As far as I understand.)

OK. I see. IMO, It is not good to expose internal symbol to app/test.
How about,
Changing __rte_trace_point_generic_is_enabled() as
rte_trace_feature_is_enabled() or similar. This variant is more like
feature is disabled at compiled time or not? And make it as public and
use in app/test.


>

Reply via email to