Re: [PATCH v17 2/2] eal: RTE_PTR_ADD/SUB API improvements

David Marchand
2026-02-03T09:51:59Z

On Mon, 2 Feb 2026 at 06:25, <scott.k.mitch1@gmail.com> wrote:
>
> From: Scott Mitchell <scott.k.mitch1@gmail.com>
>
> RTE_PTR_ADD and RTE_PTR_SUB APIs have a few limitations:
> 1. ptr cast to uintptr_t drops pointer provenance and
> prevents compiler optimizations
> 2. return cast discards qualifiers (const, volatile)
> which may hide correctness/concurrency issues.
> 3. Accepts both "pointers" and "integers as pointers" which
> overloads the use case and constrains the implementation
> to address other challenges.
>
> This patch splits the API on two dimensions:
> 1. pointer types
> 2. integer types that represent pointers
>
> This split allows addressing each of the challenges above
> and provides distinct APIs for the distinct use cases.
> Examples:
> 1. Clang is able to optimize and improve __rte_raw_cksum
> (which uses RTE_PTR_ADD) by ~40% (100 bytes) to ~8x (1.5k bytes)
> TSC cycles/byte.
> 2. Refactoring discovered cases that dropped qualifiers (volatile)
> that the new API exposes.
>
> Signed-off-by: Scott Mitchell <scott.k.mitch1@gmail.com>
> ---
> app/test-pmd/cmdline_flow.c | 4 +-
> app/test/meson.build | 1 +
> app/test/test_common.c | 20 +-
> app/test/test_ptr_add_sub.c | 199 +++++++++++++++++

Do we *need* a new file for testing new macros?
So far, everything went to test_common.c.

--
David Marchand