[PATCH] graph: expose node context as pointers
Jerin Jacob
jerinjacobk at gmail.com
Thu Mar 21 09:13:39 CET 2024
On Wed, Mar 20, 2024 at 11:02 PM Robin Jarry <rjarry at redhat.com> wrote:
>
> In some cases, the node context data is used to store two pointers
> because the data is larger than the reserved 16 bytes. Having to define
> intermediate structures just to be able to cast is tedious. Add two
> pointers that take the same space than ctx.
>
> Signed-off-by: Robin Jarry <rjarry at redhat.com>
> ---
> lib/graph/rte_graph_worker_common.h | 9 ++++++++-
> 1 file changed, 8 insertions(+), 1 deletion(-)
>
> diff --git a/lib/graph/rte_graph_worker_common.h b/lib/graph/rte_graph_worker_common.h
> index 36d864e2c14e..a7fcdf4893ea 100644
> --- a/lib/graph/rte_graph_worker_common.h
> +++ b/lib/graph/rte_graph_worker_common.h
> @@ -112,7 +112,14 @@ struct __rte_cache_aligned rte_node {
> };
> /* Fast path area */
> #define RTE_NODE_CTX_SZ 16
> - alignas(RTE_CACHE_LINE_SIZE) uint8_t ctx[RTE_NODE_CTX_SZ]; /**< Node Context. */
> + alignas(RTE_CACHE_LINE_SIZE) union {
> + uint8_t ctx[RTE_NODE_CTX_SZ];
> + /* Convenience aliases to store pointers without complex casting. */
1) Use _extension_ to not break this on windows build. See rte_mbuf.
2) Also add static assert to make sure the following struct is not
greater than RTE_NODE_CTX_SZ. To avoid accidentally adding something
in the future.
> + struct {
> + void *ctx_ptr;
> + void *ctx_ptr2;
> + };
> + }; /**< Node Context. */
> uint16_t size; /**< Total number of objects available. */
> uint16_t idx; /**< Number of objects used. */
> rte_graph_off_t off; /**< Offset of node in the graph reel. */
> --
> 2.44.0
>
More information about the dev
mailing list