> From: David Marchand [mailto:[email protected]]
> Sent: Monday, 12 January 2026 08.59
> 
> Hello,
> 
> On Mon, 12 Jan 2026 at 02:04, Stephen Hemminger
> <[email protected]> wrote:
> > #### Warning (Minor)
> >
> > **Implicit boolean comparison:** The `RTE_MBUF_DIRECT(mbuf)` macro
> returns an integer-like value (0 or non-zero). Per DPDK guidelines,
> explicit comparison with zero is preferred for integers:
> >
> > ```c
> > // Suggested (strict interpretation):
> > if (RTE_MBUF_DIRECT(mbuf) != 0 && mbuf->pool == umem->mb_pool) {
> > ```
> >
> > However, this macro is semantically boolean and is commonly used in
> direct form throughout DPDK. This is a stylistic preference, not a
> blocking issue.
> 
> All callers in DPDK are using this macro as a boolean, and I found no
> opensource project doing differently.
> I would either fix the macro or change nothing at all.

The macro's return type is int, not bool.

However, it is defined as "!something()", so it returns only 0 or 1:
https://elixir.bootlin.com/dpdk/v25.11/source/lib/mbuf/rte_mbuf_core.h#L732

Also in DPDK 24.11:
https://elixir.bootlin.com/dpdk/v24.11/source/lib/mbuf/rte_mbuf_core.h#L715

And in DPDK 17.11:
https://elixir.bootlin.com/dpdk/v17.11/source/lib/librte_mbuf/rte_mbuf.h#L714

Haven't gone further back in history. :-)

Reply via email to