> -----Original Message----- > From: Jerin Jacob <[email protected]> > Sent: Monday, February 20, 2023 9:45 PM > To: Yan, Zhirun <[email protected]> > Cc: [email protected]; [email protected]; [email protected]; > [email protected]; Liang, Cunming <[email protected]>; Wang, > Haiyue <[email protected]> > Subject: Re: [PATCH v1 03/13] graph: add macro to walk on graph circular > buffer > > On Thu, Nov 17, 2022 at 10:40 AM Zhirun Yan <[email protected]> wrote: > > > > It is common to walk on graph circular buffer and use macro to make it > > reusable for other worker models. > > > > Signed-off-by: Haiyue Wang <[email protected]> > > Signed-off-by: Cunming Liang <[email protected]> > > Signed-off-by: Zhirun Yan <[email protected]> > > --- > > lib/graph/rte_graph_model_rtc.h | 23 ++--------------------- > > lib/graph/rte_graph_worker_common.h | 23 +++++++++++++++++++++++ > > 2 files changed, 25 insertions(+), 21 deletions(-) > > > +/** > > + * Macro to walk on the source node(s) ((cir_start - head) -> > > +cir_start) > > + * and then on the pending streams > > + * (cir_start -> (cir_start + mask) -> cir_start) > > + * in a circular buffer fashion. > > + * > > + * +-----+ <= cir_start - head [number of source nodes] > > + * | | > > + * | ... | <= source nodes > > + * | | > > + * +-----+ <= cir_start [head = 0] [tail = 0] > > + * | | > > + * | ... | <= pending streams > > + * | | > > + * +-----+ <= cir_start + mask > > + */ > > +#define rte_graph_walk_node(graph, head, node) > > \ > > + for ((node) = RTE_PTR_ADD((graph), > > (graph)->cir_start[(int32_t)(head)]); > \ > > + likely((head) != (graph)->tail); > > \ > > + (head)++, > > \ > > + (node) = RTE_PTR_ADD((graph), > > (graph)->cir_start[(int32_t)(head)]), > \ > > This is an additional assignment compare to original while() based version. > Right? > No need to generalize with performance impact. Yes, you are right. I will change the macro to use the original while loop.
> > > > + (head) = likely((int32_t)(head) > 0) ? (head) & > > + (graph)->cir_mask : (head)) > > + > > /** > > * @internal > > * > > -- > > 2.25.1 > >

