All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Monjalon <thomas@monjalon.net>
To: Bruce Richardson <bruce.richardson@intel.com>
Cc: dev@dpdk.org
Subject: Re: [PATCH] node: fix C++ compatibility errors (option 2)
Date: Tue, 01 Jul 2025 15:04:15 +0200	[thread overview]
Message-ID: <7481254.gyZViRk3AK@thomas> (raw)
In-Reply-To: <20250630105025.2265901-1-bruce.richardson@intel.com>

30/06/2025 12:50, Bruce Richardson:
> C++ does not allow zero-sized unions - they end up being of size 1-byte,
> which leads to C/C++ compatibility issues, flagged by the compiler.
> 
>   lib/node/rte_node_mbuf_dynfield.h:78:2: error: union has size 0 in C,
> size 1 in C++ [-Werror,-Wextern-c-compat]
>    78 |         union {
> 	         |         ^
> 		 1 error generated.
> 
> Fix the error by omitting the persistent_data field when it is
> zero-sized, since it's unusable. Any app using the field must already
> specify a size for the persistent data.
[...]
> --- a/lib/node/rte_node_mbuf_dynfield.h
> +++ b/lib/node/rte_node_mbuf_dynfield.h
> @@ -69,6 +69,7 @@ typedef struct rte_node_mbuf_overload_fields {
>   * 2. Overloadable fields: Fields which can be repurposed by two adjacent nodes.
>   */
>  typedef struct rte_node_mbuf_dynfield {
> +#if RTE_NODE_MBUF_PERSISTENT_FIELDS_SIZE > 0
>  	/**
>  	 * Persistent mbuf region across nodes in graph walk
>  	 *
> @@ -78,6 +79,7 @@ typedef struct rte_node_mbuf_dynfield {
>  	union {
>  		uint8_t persistent_data[RTE_NODE_MBUF_PERSISTENT_FIELDS_SIZE];
>  	};
> +#endif

I didn't do a deep analysis but I think I would prefer this option 2.



  reply	other threads:[~2025-07-01 13:04 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-06-30 10:50 [PATCH] node: fix C++ compatibility errors (option 2) Bruce Richardson
2025-07-01 13:04 ` Thomas Monjalon [this message]
2025-07-01 14:48 ` Nitin Saxena
2025-07-02 10:00   ` Thomas Monjalon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=7481254.gyZViRk3AK@thomas \
    --to=thomas@monjalon.net \
    --cc=bruce.richardson@intel.com \
    --cc=dev@dpdk.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.