[v4,29/39] lpm: use C11 alignas
Checks
Commit Message
* Move __rte_aligned from the end of {struct,union} definitions to
be between {struct,union} and tag.
The placement between {struct,union} and the tag allows the desired
alignment to be imparted on the type regardless of the toolchain being
used for all of GCC, LLVM, MSVC compilers building both C and C++.
* Replace use of __rte_aligned(a) on variables/fields with alignas(a).
Signed-off-by: Tyler Retzlaff <roretzla@linux.microsoft.com>
Acked-by: Morten Brørup <mb@smartsharesystems.com>
---
lib/lpm/rte_lpm.h | 5 +++--
lib/lpm/rte_lpm6.c | 8 ++++----
2 files changed, 7 insertions(+), 6 deletions(-)
@@ -11,6 +11,7 @@
* RTE Longest Prefix Match (LPM)
*/
+#include <stdalign.h>
#include <errno.h>
#include <stdint.h>
@@ -118,8 +119,8 @@ struct rte_lpm_config {
/** @internal LPM structure. */
struct rte_lpm {
/* LPM Tables. */
- struct rte_lpm_tbl_entry tbl24[RTE_LPM_TBL24_NUM_ENTRIES]
- __rte_cache_aligned; /**< LPM tbl24 table. */
+ alignas(RTE_CACHE_LINE_SIZE) struct rte_lpm_tbl_entry tbl24[RTE_LPM_TBL24_NUM_ENTRIES];
+ /**< LPM tbl24 table. */
struct rte_lpm_tbl_entry *tbl8; /**< LPM tbl8 table. */
};
@@ -98,16 +98,16 @@ struct rte_lpm6 {
/* LPM Tables. */
struct rte_hash *rules_tbl; /**< LPM rules. */
- struct rte_lpm6_tbl_entry tbl24[RTE_LPM6_TBL24_NUM_ENTRIES]
- __rte_cache_aligned; /**< LPM tbl24 table. */
+ alignas(RTE_CACHE_LINE_SIZE) struct rte_lpm6_tbl_entry tbl24[RTE_LPM6_TBL24_NUM_ENTRIES];
+ /**< LPM tbl24 table. */
uint32_t *tbl8_pool; /**< pool of indexes of free tbl8s */
uint32_t tbl8_pool_pos; /**< current position in the tbl8 pool */
struct rte_lpm_tbl8_hdr *tbl8_hdrs; /* array of tbl8 headers */
- struct rte_lpm6_tbl_entry tbl8[0]
- __rte_cache_aligned; /**< LPM tbl8 table. */
+ alignas(RTE_CACHE_LINE_SIZE) struct rte_lpm6_tbl_entry tbl8[0];
+ /**< LPM tbl8 table. */
};
/*