From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm0-f47.google.com (mail-wm0-f47.google.com [74.125.82.47]) by dpdk.org (Postfix) with ESMTP id 9D3B53237 for ; Tue, 5 Apr 2016 16:08:38 +0200 (CEST) Received: by mail-wm0-f47.google.com with SMTP id n3so23415566wmn.0 for ; Tue, 05 Apr 2016 07:08:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=6wind-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=3vhrC4VRLd/ktgmyfWljiIgN3NMf0esCjyLB+9WGdjQ=; b=eouDEOux3gzBfNrFqMT4GZHofmrNSrLvk2nBm4pcSZxA2osmft+hnrUmp65LOtS8Hw smdjDLn+I4ews2a+5PQy+5/tnbbZ31pG6bKm3SWFjAtWfRFjnTny6v3Zwxhq4Gkme7ki oXLuRIlMbalLJ0tSuvIomzyWLjRvl29nJ77gKQ56G78u4430x6c0LaqBPDPVR5kMUhLP 6b4/oKmRy8h1BXaYmL+sQXb9bnjQLuQIe0AiwV0TLgYPgBhdNU+2WBmQiHGIdOKmbZSg 29FSPxtAh9mPbZKdouQa9oLZMnw7cm7k2wHNoZ3n4UfOvE8BB4QaGaZt/cILQ1ROjY/g WeRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=3vhrC4VRLd/ktgmyfWljiIgN3NMf0esCjyLB+9WGdjQ=; b=iXee1CUKrkZNTK/s2tp2AXqN9qRgsi0MRnUPgJKXOpN+r6CpRCx1jWGX6npOLYzCjy +RboCwSTAqik/KSBM0Saqi5PY75hjdTi0GPuasWdtqs4JZSQ65HwleVhk3lF2PvCTN/C iaSTAtknQIQCjMxfPEKzsMbi4M41rTb0fkhGCNSDKfaeWK0jtu7QOek5Fj7fEVrQENBX F/cR4kYb9m4yNpkF5co0JJ2oylXEjB5IVq5EotCQaQ5u9b/jYyAg3JbiGnMcD0riSfWF Jb59Nvsj7Yh/HrUFWON8A4lfEfqJpIrRk8wU3Pu/H3mXVWuKo9yYt/NTWHeucNUwPz6z Sh3g== X-Gm-Message-State: AD7BkJKtynZ3X5Ge6ud/l7GeHqynP3+voMSQTk5vPeSkkg2K0fItleGRGWf0075+jt9YrEFu X-Received: by 10.28.64.197 with SMTP id n188mr13581132wma.96.1459865318519; Tue, 05 Apr 2016 07:08:38 -0700 (PDT) Received: from 6wind.com (guy78-3-82-239-227-177.fbx.proxad.net. [82.239.227.177]) by smtp.gmail.com with ESMTPSA id lh1sm34857579wjb.20.2016.04.05.07.08.36 (version=TLSv1/SSLv3 cipher=OTHER); Tue, 05 Apr 2016 07:08:38 -0700 (PDT) From: Adrien Mazarguil To: dev@dpdk.org Cc: Bruce Richardson , Thomas Monjalon Date: Tue, 5 Apr 2016 16:08:06 +0200 Message-Id: <1459865290-10248-7-git-send-email-adrien.mazarguil@6wind.com> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1459865290-10248-1-git-send-email-adrien.mazarguil@6wind.com> References: <1459865290-10248-1-git-send-email-adrien.mazarguil@6wind.com> Subject: [dpdk-dev] [PATCH 06/10] lib: add extension keyword to unnamed structs/unions X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 05 Apr 2016 14:08:38 -0000 Exported header files used by applications should allow the strictest compiler flags. Language extensions used in many places must be explicitly marked to avoid warnings and compilation failures. Unnamed structs/unions are allowed since C11, however many compiler versions do not use this mode by default. This commit prevents the following errors: error: ISO C99 doesn't support unnamed structs/unions error: struct has no named members Signed-off-by: Adrien Mazarguil --- lib/librte_cryptodev/rte_crypto.h | 3 +++ lib/librte_cryptodev/rte_crypto_sym.h | 4 ++++ lib/librte_cryptodev/rte_cryptodev.h | 5 +++++ lib/librte_cryptodev/rte_cryptodev_pmd.h | 2 ++ lib/librte_eal/common/include/arch/ppc_64/rte_cycles.h | 3 +++ lib/librte_eal/common/include/arch/x86/rte_atomic_32.h | 3 +++ lib/librte_eal/common/include/arch/x86/rte_cycles.h | 3 +++ lib/librte_eal/common/include/rte_common.h | 7 +++++++ lib/librte_eal/common/include/rte_devargs.h | 1 + lib/librte_eal/common/include/rte_interrupts.h | 2 ++ lib/librte_eal/common/include/rte_memory.h | 1 + lib/librte_eal/common/include/rte_memzone.h | 2 ++ lib/librte_eal/linuxapp/eal/include/exec-env/rte_interrupts.h | 1 + lib/librte_hash/rte_thash.h | 4 ++++ lib/librte_lpm/rte_lpm.h | 1 + lib/librte_mbuf/rte_mbuf.h | 5 +++++ lib/librte_pipeline/rte_pipeline.h | 3 +++ lib/librte_timer/rte_timer.h | 2 ++ 18 files changed, 52 insertions(+) diff --git a/lib/librte_cryptodev/rte_crypto.h b/lib/librte_cryptodev/rte_crypto.h index 5bc3eaa..11a7759 100644 --- a/lib/librte_cryptodev/rte_crypto.h +++ b/lib/librte_cryptodev/rte_crypto.h @@ -40,6 +40,8 @@ * */ +#include + #ifdef __cplusplus extern "C" { #endif @@ -111,6 +113,7 @@ struct rte_crypto_op { void *opaque_data; /**< Opaque pointer for user data */ + RTE_STD_C11 union { struct rte_crypto_sym_op *sym; /**< Symmetric operation parameters */ diff --git a/lib/librte_cryptodev/rte_crypto_sym.h b/lib/librte_cryptodev/rte_crypto_sym.h index 913941a..493c95b 100644 --- a/lib/librte_cryptodev/rte_crypto_sym.h +++ b/lib/librte_cryptodev/rte_crypto_sym.h @@ -42,6 +42,8 @@ * as supported symmetric crypto operation combinations. */ +#include + #ifdef __cplusplus extern "C" { #endif @@ -333,6 +335,7 @@ struct rte_crypto_sym_xform { /**< next xform in chain */ enum rte_crypto_sym_xform_type type ; /**< xform type */ + RTE_STD_C11 union { struct rte_crypto_auth_xform auth; /**< Authentication / hash xform */ @@ -371,6 +374,7 @@ struct rte_crypto_sym_op { enum rte_crypto_sym_op_sess_type type; + RTE_STD_C11 union { struct rte_cryptodev_sym_session *session; /**< Handle for the initialised session context */ diff --git a/lib/librte_cryptodev/rte_cryptodev.h b/lib/librte_cryptodev/rte_cryptodev.h index bea48bb..62e616b 100644 --- a/lib/librte_cryptodev/rte_cryptodev.h +++ b/lib/librte_cryptodev/rte_cryptodev.h @@ -44,6 +44,8 @@ * */ +#include + #ifdef __cplusplus extern "C" { #endif @@ -104,6 +106,7 @@ extern const char **rte_cyptodev_names; struct rte_cryptodev_symmetric_capability { enum rte_crypto_sym_xform_type xform_type; /**< Transform type : Authentication / Cipher */ + RTE_STD_C11 union { struct { enum rte_crypto_auth_algorithm algo; @@ -177,6 +180,7 @@ struct rte_cryptodev_capabilities { enum rte_crypto_op_type op; /**< Operation type */ + RTE_STD_C11 union { struct rte_cryptodev_symmetric_capability sym; /**< Symmetric operation capability parameters */ @@ -838,6 +842,7 @@ rte_cryptodev_enqueue_burst(uint8_t dev_id, uint16_t qp_id, /** Cryptodev symmetric crypto session */ struct rte_cryptodev_sym_session { + RTE_STD_C11 struct { uint8_t dev_id; /**< Device Id */ diff --git a/lib/librte_cryptodev/rte_cryptodev_pmd.h b/lib/librte_cryptodev/rte_cryptodev_pmd.h index 3a3845c..cf08a50 100644 --- a/lib/librte_cryptodev/rte_cryptodev_pmd.h +++ b/lib/librte_cryptodev/rte_cryptodev_pmd.h @@ -52,6 +52,7 @@ extern "C" { #include #include #include +#include #include "rte_crypto.h" #include "rte_cryptodev.h" @@ -65,6 +66,7 @@ extern "C" { #endif struct rte_cryptodev_session { + RTE_STD_C11 struct { uint8_t dev_id; enum rte_cryptodev_type type; diff --git a/lib/librte_eal/common/include/arch/ppc_64/rte_cycles.h b/lib/librte_eal/common/include/arch/ppc_64/rte_cycles.h index 64beddf..14b560c 100644 --- a/lib/librte_eal/common/include/arch/ppc_64/rte_cycles.h +++ b/lib/librte_eal/common/include/arch/ppc_64/rte_cycles.h @@ -33,6 +33,8 @@ #ifndef _RTE_CYCLES_PPC_64_H_ #define _RTE_CYCLES_PPC_64_H_ +#include + #ifdef __cplusplus extern "C" { #endif @@ -52,6 +54,7 @@ rte_rdtsc(void) { union { uint64_t tsc_64; + RTE_STD_C11 struct { #if RTE_BYTE_ORDER == RTE_BIG_ENDIAN uint32_t hi_32; diff --git a/lib/librte_eal/common/include/arch/x86/rte_atomic_32.h b/lib/librte_eal/common/include/arch/x86/rte_atomic_32.h index 400d8a9..5ce01b3 100644 --- a/lib/librte_eal/common/include/arch/x86/rte_atomic_32.h +++ b/lib/librte_eal/common/include/arch/x86/rte_atomic_32.h @@ -40,6 +40,8 @@ #ifndef _RTE_ATOMIC_I686_H_ #define _RTE_ATOMIC_I686_H_ +#include + /*------------------------- 64 bit atomic operations -------------------------*/ #ifndef RTE_FORCE_INTRINSICS @@ -47,6 +49,7 @@ static inline int rte_atomic64_cmpset(volatile uint64_t *dst, uint64_t exp, uint64_t src) { uint8_t res; + RTE_STD_C11 union { struct { uint32_t l32; diff --git a/lib/librte_eal/common/include/arch/x86/rte_cycles.h b/lib/librte_eal/common/include/arch/x86/rte_cycles.h index 6e3c7d8..ab3136a 100644 --- a/lib/librte_eal/common/include/arch/x86/rte_cycles.h +++ b/lib/librte_eal/common/include/arch/x86/rte_cycles.h @@ -64,6 +64,8 @@ #ifndef _RTE_CYCLES_X86_64_H_ #define _RTE_CYCLES_X86_64_H_ +#include + #ifdef __cplusplus extern "C" { #endif @@ -81,6 +83,7 @@ rte_rdtsc(void) { union { uint64_t tsc_64; + RTE_STD_C11 struct { uint32_t lo_32; uint32_t hi_32; diff --git a/lib/librte_eal/common/include/rte_common.h b/lib/librte_eal/common/include/rte_common.h index 477472b..98ecc1c 100644 --- a/lib/librte_eal/common/include/rte_common.h +++ b/lib/librte_eal/common/include/rte_common.h @@ -59,6 +59,13 @@ extern "C" { #define asm __asm__ #endif +/** C extension macro for environments lacking C11 features. */ +#if !defined(__STDC_VERSION__) || __STDC_VERSION__ < 201112L +#define RTE_STD_C11 __extension__ +#else +#define RTE_STD_C11 +#endif + #ifdef RTE_ARCH_STRICT_ALIGN typedef uint64_t unaligned_uint64_t __attribute__ ((aligned(1))); typedef uint32_t unaligned_uint32_t __attribute__ ((aligned(1))); diff --git a/lib/librte_eal/common/include/rte_devargs.h b/lib/librte_eal/common/include/rte_devargs.h index 53c59f5..c66895f 100644 --- a/lib/librte_eal/common/include/rte_devargs.h +++ b/lib/librte_eal/common/include/rte_devargs.h @@ -76,6 +76,7 @@ struct rte_devargs { TAILQ_ENTRY(rte_devargs) next; /** Type of device. */ enum rte_devtype type; + RTE_STD_C11 union { /** Used if type is RTE_DEVTYPE_*_PCI. */ struct { diff --git a/lib/librte_eal/common/include/rte_interrupts.h b/lib/librte_eal/common/include/rte_interrupts.h index ff11ef3..fd3c6ef 100644 --- a/lib/librte_eal/common/include/rte_interrupts.h +++ b/lib/librte_eal/common/include/rte_interrupts.h @@ -34,6 +34,8 @@ #ifndef _RTE_INTERRUPTS_H_ #define _RTE_INTERRUPTS_H_ +#include + /** * @file * diff --git a/lib/librte_eal/common/include/rte_memory.h b/lib/librte_eal/common/include/rte_memory.h index 09b5b99..61435d7 100644 --- a/lib/librte_eal/common/include/rte_memory.h +++ b/lib/librte_eal/common/include/rte_memory.h @@ -104,6 +104,7 @@ typedef uint64_t phys_addr_t; /**< Physical address definition. */ */ struct rte_memseg { phys_addr_t phys_addr; /**< Start physical address. */ + RTE_STD_C11 union { void *addr; /**< Start virtual address. */ uint64_t addr_64; /**< Makes sure addr is always 64 bits */ diff --git a/lib/librte_eal/common/include/rte_memzone.h b/lib/librte_eal/common/include/rte_memzone.h index f69b5a8..c3caf6e 100644 --- a/lib/librte_eal/common/include/rte_memzone.h +++ b/lib/librte_eal/common/include/rte_memzone.h @@ -53,6 +53,7 @@ #include #include +#include #ifdef __cplusplus extern "C" { @@ -78,6 +79,7 @@ struct rte_memzone { char name[RTE_MEMZONE_NAMESIZE]; /**< Name of the memory zone. */ phys_addr_t phys_addr; /**< Start physical address. */ + RTE_STD_C11 union { void *addr; /**< Start virtual address. */ uint64_t addr_64; /**< Makes sure addr is always 64-bits */ diff --git a/lib/librte_eal/linuxapp/eal/include/exec-env/rte_interrupts.h b/lib/librte_eal/linuxapp/eal/include/exec-env/rte_interrupts.h index 3dacbff..d459bf4 100644 --- a/lib/librte_eal/linuxapp/eal/include/exec-env/rte_interrupts.h +++ b/lib/librte_eal/linuxapp/eal/include/exec-env/rte_interrupts.h @@ -82,6 +82,7 @@ struct rte_epoll_event { /** Handle for interrupts. */ struct rte_intr_handle { + RTE_STD_C11 union { int vfio_dev_fd; /**< VFIO device file descriptor */ int uio_cfg_fd; /**< UIO config file descriptor diff --git a/lib/librte_hash/rte_thash.h b/lib/librte_hash/rte_thash.h index d98e98e..3d04cd6 100644 --- a/lib/librte_hash/rte_thash.h +++ b/lib/librte_hash/rte_thash.h @@ -40,6 +40,8 @@ * toeplitz hash functions. */ +#include + #ifdef __cplusplus extern "C" { #endif @@ -102,6 +104,7 @@ static const __m128i rte_thash_ipv6_bswap_mask = { struct rte_ipv4_tuple { uint32_t src_addr; uint32_t dst_addr; + RTE_STD_C11 union { struct { uint16_t dport; @@ -119,6 +122,7 @@ struct rte_ipv4_tuple { struct rte_ipv6_tuple { uint8_t src_addr[16]; uint8_t dst_addr[16]; + RTE_STD_C11 union { struct { uint16_t dport; diff --git a/lib/librte_lpm/rte_lpm.h b/lib/librte_lpm/rte_lpm.h index 4ea6bf6..8e5a89e 100644 --- a/lib/librte_lpm/rte_lpm.h +++ b/lib/librte_lpm/rte_lpm.h @@ -100,6 +100,7 @@ struct rte_lpm_tbl_entry_v20 { * a group index pointing to a tbl8 structure (tbl24 only, when * valid_group is set) */ + RTE_STD_C11 union { uint8_t next_hop; uint8_t group_idx; diff --git a/lib/librte_mbuf/rte_mbuf.h b/lib/librte_mbuf/rte_mbuf.h index 81eb3e4..d198161 100644 --- a/lib/librte_mbuf/rte_mbuf.h +++ b/lib/librte_mbuf/rte_mbuf.h @@ -754,6 +754,7 @@ struct rte_mbuf { * or non-atomic) is controlled by the CONFIG_RTE_MBUF_REFCNT_ATOMIC * config option. */ + RTE_STD_C11 union { rte_atomic16_t refcnt_atomic; /**< Atomically accessed refcnt */ uint16_t refcnt; /**< Non-atomically accessed refcnt */ @@ -770,6 +771,7 @@ struct rte_mbuf { * The packet type, which is the combination of outer/inner L2, L3, L4 * and tunnel types. */ + RTE_STD_C11 union { uint32_t packet_type; /**< L2/L3/L4 and tunnel information. */ struct { @@ -790,6 +792,7 @@ struct rte_mbuf { union { uint32_t rss; /**< RSS hash result if RSS enabled */ struct { + RTE_STD_C11 union { struct { uint16_t hash; @@ -816,6 +819,7 @@ struct rte_mbuf { /* second cache line - fields only used in slow path or on TX */ MARKER cacheline1 __rte_cache_min_aligned; + RTE_STD_C11 union { void *userdata; /**< Can be used for external metadata */ uint64_t udata64; /**< Allow 8-byte userdata on 32-bit */ @@ -825,6 +829,7 @@ struct rte_mbuf { struct rte_mbuf *next; /**< Next segment of scattered packet. */ /* fields to support TX offloads */ + RTE_STD_C11 union { uint64_t tx_offload; /**< combined for easy fetch */ __extension__ diff --git a/lib/librte_pipeline/rte_pipeline.h b/lib/librte_pipeline/rte_pipeline.h index 7736945..d382bbf 100644 --- a/lib/librte_pipeline/rte_pipeline.h +++ b/lib/librte_pipeline/rte_pipeline.h @@ -34,6 +34,8 @@ #ifndef __INCLUDE_RTE_PIPELINE_H__ #define __INCLUDE_RTE_PIPELINE_H__ +#include + #ifdef __cplusplus extern "C" { #endif @@ -244,6 +246,7 @@ struct rte_pipeline_table_entry { /** Reserved action */ enum rte_pipeline_action action; + RTE_STD_C11 union { /** Output port ID (meta-data for "Send packet to output port" action) */ diff --git a/lib/librte_timer/rte_timer.h b/lib/librte_timer/rte_timer.h index 77547c6..a276a73 100644 --- a/lib/librte_timer/rte_timer.h +++ b/lib/librte_timer/rte_timer.h @@ -66,6 +66,7 @@ #include #include #include +#include #ifdef __cplusplus extern "C" { @@ -91,6 +92,7 @@ enum rte_timer_type { * config) and an owner (the id of the lcore that owns the timer). */ union rte_timer_status { + RTE_STD_C11 struct { uint16_t state; /**< Stop, pending, running, config. */ int16_t owner; /**< The lcore that owns the timer. */ -- 2.1.4