From: Anatoly Burakov Date: Fri, 5 Jul 2019 13:10:30 +0000 (+0100) Subject: eal: hide shared memory config X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=028669bc9f0d;p=dpdk.git eal: hide shared memory config Now that everything that has ever accessed the shared memory config is doing so through the public API's, we can make it internal. Since we're removing quite a few headers from rte_eal_memconfig.h, we need to add them back in places where this header is used. This bumps the ABI, so also change all build files and make update documentation. Signed-off-by: Anatoly Burakov Acked-by: Stephen Hemminger Acked-by: David Marchand --- diff --git a/app/test/test_fbarray.c b/app/test/test_fbarray.c index d2b041887c..a691bf4458 100644 --- a/app/test/test_fbarray.c +++ b/app/test/test_fbarray.c @@ -2,6 +2,7 @@ * Copyright(c) 2010-2014 Intel Corporation */ +#include #include #include #include diff --git a/app/test/test_memzone.c b/app/test/test_memzone.c index 9fe465e621..7501b63c58 100644 --- a/app/test/test_memzone.c +++ b/app/test/test_memzone.c @@ -19,6 +19,7 @@ #include #include #include "../../lib/librte_eal/common/malloc_elem.h" +#include "../../lib/librte_eal/common/eal_memcfg.h" #include "test.h" diff --git a/app/test/test_tailq.c b/app/test/test_tailq.c index a4ecea2d8d..7c9b69fdb9 100644 --- a/app/test/test_tailq.c +++ b/app/test/test_tailq.c @@ -12,6 +12,7 @@ #include #include #include +#include #include "test.h" diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst index e2721fad69..583217da8e 100644 --- a/doc/guides/rel_notes/deprecation.rst +++ b/doc/guides/rel_notes/deprecation.rst @@ -23,9 +23,6 @@ Deprecation Notices * eal: The function ``rte_eal_remote_launch`` will return new error codes after read or write error on the pipe, instead of calling ``rte_panic``. -* eal: the ``rte_mem_config`` struct will be made private to remove it from the - externally visible ABI and allow it to be updated in the future. - * eal: both declaring and identifying devices will be streamlined in v18.11. New functions will appear to query a specific port from buses, classes of device and device drivers. Device declaration will be made coherent with the diff --git a/doc/guides/rel_notes/release_19_08.rst b/doc/guides/rel_notes/release_19_08.rst index 8cd90e0c3a..0c4c3b3970 100644 --- a/doc/guides/rel_notes/release_19_08.rst +++ b/doc/guides/rel_notes/release_19_08.rst @@ -178,6 +178,10 @@ API Changes Also, make sure to start the actual text at the margin. ========================================================= +* The ``rte_mem_config`` structure has been made private. The new accessor + ``rte_mcfg_*`` functions were introduced to provide replacement for direct + access to the shared mem config. + * The network structures, definitions and functions have been prefixed by ``rte_`` to resolve conflicts with libc headers. @@ -252,7 +256,7 @@ The libraries prepended with a plus sign were incremented in this version. librte_compressdev.so.1 librte_cryptodev.so.7 librte_distributor.so.1 - librte_eal.so.10 + + librte_eal.so.11 librte_efd.so.1 librte_ethdev.so.12 + librte_eventdev.so.7 diff --git a/drivers/bus/pci/linux/pci_vfio.c b/drivers/bus/pci/linux/pci_vfio.c index ebf6ccd3c1..1ceb1c07b4 100644 --- a/drivers/bus/pci/linux/pci_vfio.c +++ b/drivers/bus/pci/linux/pci_vfio.c @@ -20,6 +20,7 @@ #include #include #include +#include #include "eal_filesystem.h" diff --git a/drivers/net/mlx4/mlx4.c b/drivers/net/mlx4/mlx4.c index aa4d43fad7..2e169b0887 100644 --- a/drivers/net/mlx4/mlx4.c +++ b/drivers/net/mlx4/mlx4.c @@ -715,7 +715,7 @@ mlx4_init_once(void) ret = mlx4_mp_init_primary(); if (ret) goto out; - sd->init_done = true; + sd->init_done = 1; break; case RTE_PROC_SECONDARY: if (ld->init_done) @@ -724,7 +724,7 @@ mlx4_init_once(void) if (ret) goto out; ++sd->secondary_cnt; - ld->init_done = true; + ld->init_done = 1; break; default: break; diff --git a/drivers/net/mlx4/mlx4_rxtx.c b/drivers/net/mlx4/mlx4_rxtx.c index a941a8a2f1..4dc0adb938 100644 --- a/drivers/net/mlx4/mlx4_rxtx.c +++ b/drivers/net/mlx4/mlx4_rxtx.c @@ -9,6 +9,7 @@ */ #include +#include #include #include diff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h index a3689c8ec0..aa88464117 100644 --- a/drivers/net/mlx5/mlx5.h +++ b/drivers/net/mlx5/mlx5.h @@ -7,6 +7,7 @@ #define RTE_PMD_MLX5_H_ #include +#include #include #include #include diff --git a/drivers/net/mlx5/mlx5_ethdev.c b/drivers/net/mlx5/mlx5_ethdev.c index 26a1a3a848..0c7162d7ed 100644 --- a/drivers/net/mlx5/mlx5_ethdev.c +++ b/drivers/net/mlx5/mlx5_ethdev.c @@ -7,6 +7,7 @@ #include #include #include +#include #include #include #include diff --git a/lib/librte_acl/rte_acl.c b/lib/librte_acl/rte_acl.c index 7ff11d25f5..bd7247cc3d 100644 --- a/lib/librte_acl/rte_acl.c +++ b/lib/librte_acl/rte_acl.c @@ -4,6 +4,8 @@ #include #include +#include + #include "acl.h" TAILQ_HEAD(rte_acl_list, rte_tailq_entry); diff --git a/lib/librte_distributor/rte_distributor.c b/lib/librte_distributor/rte_distributor.c index 9eb78b3309..0a3213bbfc 100644 --- a/lib/librte_distributor/rte_distributor.c +++ b/lib/librte_distributor/rte_distributor.c @@ -14,6 +14,7 @@ #include #include #include +#include #include "rte_distributor_private.h" #include "rte_distributor.h" diff --git a/lib/librte_distributor/rte_distributor_v20.c b/lib/librte_distributor/rte_distributor_v20.c index 1fc03b9711..cdc0969a89 100644 --- a/lib/librte_distributor/rte_distributor_v20.c +++ b/lib/librte_distributor/rte_distributor_v20.c @@ -13,6 +13,7 @@ #include #include #include +#include #include "rte_distributor_v20.h" #include "rte_distributor_private.h" diff --git a/lib/librte_eal/common/eal_common_mcfg.c b/lib/librte_eal/common/eal_common_mcfg.c index ba2bc37b78..337890a61a 100644 --- a/lib/librte_eal/common/eal_common_mcfg.c +++ b/lib/librte_eal/common/eal_common_mcfg.c @@ -5,6 +5,8 @@ #include #include +#include "eal_memcfg.h" + void rte_mcfg_mem_read_lock(void) { diff --git a/lib/librte_eal/common/eal_common_memory.c b/lib/librte_eal/common/eal_common_memory.c index fe22b139b0..19ea47570b 100644 --- a/lib/librte_eal/common/eal_common_memory.c +++ b/lib/librte_eal/common/eal_common_memory.c @@ -24,6 +24,7 @@ #include "eal_memalloc.h" #include "eal_private.h" #include "eal_internal_cfg.h" +#include "eal_memcfg.h" #include "malloc_heap.h" /* diff --git a/lib/librte_eal/common/eal_common_memzone.c b/lib/librte_eal/common/eal_common_memzone.c index 521ad7ca11..ef6c909cb4 100644 --- a/lib/librte_eal/common/eal_common_memzone.c +++ b/lib/librte_eal/common/eal_common_memzone.c @@ -24,6 +24,7 @@ #include "malloc_heap.h" #include "malloc_elem.h" #include "eal_private.h" +#include "eal_memcfg.h" static inline const struct rte_memzone * memzone_lookup_thread_unsafe(const char *name) diff --git a/lib/librte_eal/common/eal_common_tailqs.c b/lib/librte_eal/common/eal_common_tailqs.c index dc2c13caaa..ead06897b8 100644 --- a/lib/librte_eal/common/eal_common_tailqs.c +++ b/lib/librte_eal/common/eal_common_tailqs.c @@ -23,6 +23,7 @@ #include #include "eal_private.h" +#include "eal_memcfg.h" TAILQ_HEAD(rte_tailq_elem_head, rte_tailq_elem); /* local tailq list */ diff --git a/lib/librte_eal/common/eal_memcfg.h b/lib/librte_eal/common/eal_memcfg.h new file mode 100644 index 0000000000..74f6159c64 --- /dev/null +++ b/lib/librte_eal/common/eal_memcfg.h @@ -0,0 +1,80 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2019 Intel Corporation + */ + +#ifndef EAL_MEMCFG_H +#define EAL_MEMCFG_H + +#include +#include +#include +#include +#include +#include +#include +#include + +/** + * Memory configuration shared across multiple processes. + */ +struct rte_mem_config { + volatile uint32_t magic; /**< Magic number - sanity check. */ + + /* memory topology */ + uint32_t nchannel; /**< Number of channels (0 if unknown). */ + uint32_t nrank; /**< Number of ranks (0 if unknown). */ + + /** + * current lock nest order + * - qlock->mlock (ring/hash/lpm) + * - mplock->qlock->mlock (mempool) + * Notice: + * *ALWAYS* obtain qlock first if having to obtain both qlock and mlock + */ + rte_rwlock_t mlock; /**< used by memzones for thread safety. */ + rte_rwlock_t qlock; /**< used by tailqs for thread safety. */ + rte_rwlock_t mplock; /**< used by mempool library for thread safety. */ + + rte_rwlock_t memory_hotplug_lock; + /**< Indicates whether memory hotplug request is in progress. */ + + /* memory segments and zones */ + struct rte_fbarray memzones; /**< Memzone descriptors. */ + + struct rte_memseg_list memsegs[RTE_MAX_MEMSEG_LISTS]; + /**< List of dynamic arrays holding memsegs */ + + struct rte_tailq_head tailq_head[RTE_MAX_TAILQ]; + /**< Tailqs for objects */ + + struct malloc_heap malloc_heaps[RTE_MAX_HEAPS]; + /**< DPDK malloc heaps */ + + int next_socket_id; /**< Next socket ID for external malloc heap */ + + /* rte_mem_config has to be mapped at the exact same address in all + * processes, so we need to store it. + */ + uint64_t mem_cfg_addr; /**< Address of this structure in memory. */ + + /* Primary and secondary processes cannot run with different legacy or + * single file segments options, so to avoid having to specify these + * options to all processes, store them in shared config and update the + * internal config at init time. + */ + uint32_t legacy_mem; /**< stored legacy mem parameter. */ + uint32_t single_file_segments; + /**< stored single file segments parameter. */ + + uint8_t dma_maskbits; /**< Keeps the more restricted dma mask. */ +} __attribute__((packed)); + +static inline void +rte_eal_mcfg_wait_complete(struct rte_mem_config *mcfg) +{ + /* wait until shared mem_config finish initialising */ + while (mcfg->magic != RTE_MAGIC) + rte_pause(); +} + +#endif /* EAL_MEMCFG_H */ diff --git a/lib/librte_eal/common/include/rte_eal_memconfig.h b/lib/librte_eal/common/include/rte_eal_memconfig.h index 58dcbb96d7..dc61a6fed7 100644 --- a/lib/librte_eal/common/include/rte_eal_memconfig.h +++ b/lib/librte_eal/common/include/rte_eal_memconfig.h @@ -5,101 +5,16 @@ #ifndef _RTE_EAL_MEMCONFIG_H_ #define _RTE_EAL_MEMCONFIG_H_ -#include -#include -#include -#include -#include -#include -#include -#include +/** + * @file + * + * This API allows access to EAL shared memory configuration through an API. + */ #ifdef __cplusplus extern "C" { #endif -/** - * memseg list is a special case as we need to store a bunch of other data - * together with the array itself. - */ -struct rte_memseg_list { - RTE_STD_C11 - union { - void *base_va; - /**< Base virtual address for this memseg list. */ - uint64_t addr_64; - /**< Makes sure addr is always 64-bits */ - }; - uint64_t page_sz; /**< Page size for all memsegs in this list. */ - int socket_id; /**< Socket ID for all memsegs in this list. */ - volatile uint32_t version; /**< version number for multiprocess sync. */ - size_t len; /**< Length of memory area covered by this memseg list. */ - unsigned int external; /**< 1 if this list points to external memory */ - struct rte_fbarray memseg_arr; -}; - -/** - * the structure for the memory configuration for the RTE. - * Used by the rte_config structure. It is separated out, as for multi-process - * support, the memory details should be shared across instances - */ -struct rte_mem_config { - volatile uint32_t magic; /**< Magic number - Sanity check. */ - - /* memory topology */ - uint32_t nchannel; /**< Number of channels (0 if unknown). */ - uint32_t nrank; /**< Number of ranks (0 if unknown). */ - - /** - * current lock nest order - * - qlock->mlock (ring/hash/lpm) - * - mplock->qlock->mlock (mempool) - * Notice: - * *ALWAYS* obtain qlock first if having to obtain both qlock and mlock - */ - rte_rwlock_t mlock; /**< only used by memzone LIB for thread-safe. */ - rte_rwlock_t qlock; /**< used for tailq operation for thread safe. */ - rte_rwlock_t mplock; /**< only used by mempool LIB for thread-safe. */ - - rte_rwlock_t memory_hotplug_lock; - /**< indicates whether memory hotplug request is in progress. */ - - /* memory segments and zones */ - struct rte_fbarray memzones; /**< Memzone descriptors. */ - - struct rte_memseg_list memsegs[RTE_MAX_MEMSEG_LISTS]; - /**< list of dynamic arrays holding memsegs */ - - struct rte_tailq_head tailq_head[RTE_MAX_TAILQ]; /**< Tailqs for objects */ - - /* Heaps of Malloc */ - struct malloc_heap malloc_heaps[RTE_MAX_HEAPS]; - - /* next socket ID for external malloc heap */ - int next_socket_id; - - /* address of mem_config in primary process. used to map shared config into - * exact same address the primary process maps it. - */ - uint64_t mem_cfg_addr; - - /* legacy mem and single file segments options are shared */ - uint32_t legacy_mem; - uint32_t single_file_segments; - - /* keeps the more restricted dma mask */ - uint8_t dma_maskbits; -} __attribute__((__packed__)); - - -inline static void -rte_eal_mcfg_wait_complete(struct rte_mem_config* mcfg) -{ - /* wait until shared mem_config finish initialising */ - while(mcfg->magic != RTE_MAGIC) - rte_pause(); -} - /** * Lock the internal EAL shared memory configuration for shared access. */ diff --git a/lib/librte_eal/common/include/rte_fbarray.h b/lib/librte_eal/common/include/rte_fbarray.h index d0af2d8c70..6dccdbec98 100644 --- a/lib/librte_eal/common/include/rte_fbarray.h +++ b/lib/librte_eal/common/include/rte_fbarray.h @@ -34,7 +34,6 @@ extern "C" { #endif -#include #include #include diff --git a/lib/librte_eal/common/include/rte_memory.h b/lib/librte_eal/common/include/rte_memory.h index 870288aa7b..4717dcb439 100644 --- a/lib/librte_eal/common/include/rte_memory.h +++ b/lib/librte_eal/common/include/rte_memory.h @@ -22,9 +22,7 @@ extern "C" { #include #include #include - -/* forward declaration for pointers */ -struct rte_memseg_list; +#include __extension__ enum rte_page_sizes { @@ -104,6 +102,26 @@ struct rte_memseg { uint32_t flags; /**< Memseg-specific flags */ } __rte_packed; +/** + * memseg list is a special case as we need to store a bunch of other data + * together with the array itself. + */ +struct rte_memseg_list { + RTE_STD_C11 + union { + void *base_va; + /**< Base virtual address for this memseg list. */ + uint64_t addr_64; + /**< Makes sure addr is always 64-bits */ + }; + uint64_t page_sz; /**< Page size for all memsegs in this list. */ + int socket_id; /**< Socket ID for all memsegs in this list. */ + volatile uint32_t version; /**< version number for multiprocess sync. */ + size_t len; /**< Length of memory area covered by this memseg list. */ + unsigned int external; /**< 1 if this list points to external memory */ + struct rte_fbarray memseg_arr; +}; + /** * Lock page in physical memory and prevent from swapping. * diff --git a/lib/librte_eal/common/malloc_heap.c b/lib/librte_eal/common/malloc_heap.c index f1d31de0da..634ca212f2 100644 --- a/lib/librte_eal/common/malloc_heap.c +++ b/lib/librte_eal/common/malloc_heap.c @@ -20,11 +20,13 @@ #include #include #include +#include #include #include #include "eal_internal_cfg.h" #include "eal_memalloc.h" +#include "eal_memcfg.h" #include "malloc_elem.h" #include "malloc_heap.h" #include "malloc_mp.h" diff --git a/lib/librte_eal/common/malloc_mp.c b/lib/librte_eal/common/malloc_mp.c index 7c6112c4e3..1f212f8349 100644 --- a/lib/librte_eal/common/malloc_mp.c +++ b/lib/librte_eal/common/malloc_mp.c @@ -10,6 +10,7 @@ #include #include "eal_memalloc.h" +#include "eal_memcfg.h" #include "malloc_elem.h" #include "malloc_mp.h" diff --git a/lib/librte_eal/common/rte_malloc.c b/lib/librte_eal/common/rte_malloc.c index 2cad7beaaa..fecd9a964d 100644 --- a/lib/librte_eal/common/rte_malloc.c +++ b/lib/librte_eal/common/rte_malloc.c @@ -25,6 +25,7 @@ #include "malloc_elem.h" #include "malloc_heap.h" #include "eal_memalloc.h" +#include "eal_memcfg.h" /* Free the memory space back to heap */ diff --git a/lib/librte_eal/freebsd/eal/Makefile b/lib/librte_eal/freebsd/eal/Makefile index eb921275e3..89131ea892 100644 --- a/lib/librte_eal/freebsd/eal/Makefile +++ b/lib/librte_eal/freebsd/eal/Makefile @@ -22,7 +22,7 @@ LDLIBS += -lrte_kvargs EXPORT_MAP := ../../rte_eal_version.map -LIBABIVER := 10 +LIBABIVER := 11 # specific to freebsd exec-env SRCS-$(CONFIG_RTE_EXEC_ENV_FREEBSD) := eal.c diff --git a/lib/librte_eal/freebsd/eal/eal_memory.c b/lib/librte_eal/freebsd/eal/eal_memory.c index 4b092e1f21..9b9a0577a3 100644 --- a/lib/librte_eal/freebsd/eal/eal_memory.c +++ b/lib/librte_eal/freebsd/eal/eal_memory.c @@ -18,6 +18,7 @@ #include "eal_private.h" #include "eal_internal_cfg.h" #include "eal_filesystem.h" +#include "eal_memcfg.h" #define EAL_PAGE_SIZE (sysconf(_SC_PAGESIZE)) diff --git a/lib/librte_eal/linux/eal/Makefile b/lib/librte_eal/linux/eal/Makefile index dfe8e9a498..0f5725e64a 100644 --- a/lib/librte_eal/linux/eal/Makefile +++ b/lib/librte_eal/linux/eal/Makefile @@ -10,7 +10,7 @@ ARCH_DIR ?= $(RTE_ARCH) EXPORT_MAP := ../../rte_eal_version.map VPATH += $(RTE_SDK)/lib/librte_eal/common/arch/$(ARCH_DIR) -LIBABIVER := 10 +LIBABIVER := 11 VPATH += $(RTE_SDK)/lib/librte_eal/common diff --git a/lib/librte_eal/linux/eal/eal.c b/lib/librte_eal/linux/eal/eal.c index 9b6926b867..228d6b3ec6 100644 --- a/lib/librte_eal/linux/eal/eal.c +++ b/lib/librte_eal/linux/eal/eal.c @@ -57,6 +57,7 @@ #include "eal_internal_cfg.h" #include "eal_filesystem.h" #include "eal_hugepages.h" +#include "eal_memcfg.h" #include "eal_options.h" #include "eal_vfio.h" #include "hotplug_mp.h" diff --git a/lib/librte_eal/linux/eal/eal_memalloc.c b/lib/librte_eal/linux/eal/eal_memalloc.c index 2019636fbf..1f6a7c18fe 100644 --- a/lib/librte_eal/linux/eal/eal_memalloc.c +++ b/lib/librte_eal/linux/eal/eal_memalloc.c @@ -44,6 +44,7 @@ #include "eal_filesystem.h" #include "eal_internal_cfg.h" #include "eal_memalloc.h" +#include "eal_memcfg.h" #include "eal_private.h" const int anonymous_hugepages_supported = diff --git a/lib/librte_eal/linux/eal/eal_memory.c b/lib/librte_eal/linux/eal/eal_memory.c index 25c4145aea..1c089a1ef9 100644 --- a/lib/librte_eal/linux/eal/eal_memory.c +++ b/lib/librte_eal/linux/eal/eal_memory.c @@ -46,6 +46,7 @@ #include "eal_private.h" #include "eal_memalloc.h" +#include "eal_memcfg.h" #include "eal_internal_cfg.h" #include "eal_filesystem.h" #include "eal_hugepages.h" diff --git a/lib/librte_eal/linux/eal/eal_vfio.c b/lib/librte_eal/linux/eal/eal_vfio.c index 96a03a6577..fdc884f70b 100644 --- a/lib/librte_eal/linux/eal/eal_vfio.c +++ b/lib/librte_eal/linux/eal/eal_vfio.c @@ -15,6 +15,7 @@ #include #include "eal_filesystem.h" +#include "eal_memcfg.h" #include "eal_vfio.h" #include "eal_private.h" diff --git a/lib/librte_eal/meson.build b/lib/librte_eal/meson.build index ccd5b85b82..2751023a91 100644 --- a/lib/librte_eal/meson.build +++ b/lib/librte_eal/meson.build @@ -12,7 +12,7 @@ subdir('common') # defines common_sources, common_objs, etc. dpdk_conf.set('RTE_EXEC_ENV_' + exec_env.to_upper(), 1) subdir(exec_env + '/eal') -version = 10 # the version of the EAL API +version = 11 # the version of the EAL API allow_experimental_apis = true deps += 'kvargs' if dpdk_conf.has('RTE_USE_LIBBSD') diff --git a/lib/librte_efd/rte_efd.c b/lib/librte_efd/rte_efd.c index b808ce99fa..d3d0195784 100644 --- a/lib/librte_efd/rte_efd.c +++ b/lib/librte_efd/rte_efd.c @@ -20,6 +20,7 @@ #include #include #include +#include #include "rte_efd.h" #if defined(RTE_ARCH_X86) diff --git a/lib/librte_hash/rte_cuckoo_hash.c b/lib/librte_hash/rte_cuckoo_hash.c index 47cd0da5bc..74d5bbd99f 100644 --- a/lib/librte_hash/rte_cuckoo_hash.c +++ b/lib/librte_hash/rte_cuckoo_hash.c @@ -27,6 +27,7 @@ #include #include #include +#include #include "rte_hash.h" #include "rte_cuckoo_hash.h" diff --git a/lib/librte_hash/rte_fbk_hash.c b/lib/librte_hash/rte_fbk_hash.c index db118c9307..576e8e6662 100644 --- a/lib/librte_hash/rte_fbk_hash.c +++ b/lib/librte_hash/rte_fbk_hash.c @@ -20,6 +20,7 @@ #include #include #include +#include #include "rte_fbk_hash.h" diff --git a/lib/librte_lpm/rte_lpm.c b/lib/librte_lpm/rte_lpm.c index b91f74216b..70c24ac1fd 100644 --- a/lib/librte_lpm/rte_lpm.c +++ b/lib/librte_lpm/rte_lpm.c @@ -21,6 +21,7 @@ #include #include #include +#include #include "rte_lpm.h" diff --git a/lib/librte_lpm/rte_lpm6.c b/lib/librte_lpm/rte_lpm6.c index 5af74a539a..9b8aeb9721 100644 --- a/lib/librte_lpm/rte_lpm6.c +++ b/lib/librte_lpm/rte_lpm6.c @@ -24,6 +24,7 @@ #include #include #include +#include #include "rte_lpm6.h" diff --git a/lib/librte_member/rte_member.c b/lib/librte_member/rte_member.c index efed28dd9c..e0e7f127e3 100644 --- a/lib/librte_member/rte_member.c +++ b/lib/librte_member/rte_member.c @@ -10,6 +10,7 @@ #include #include #include +#include #include "rte_member.h" #include "rte_member_ht.h" diff --git a/lib/librte_mempool/rte_mempool.c b/lib/librte_mempool/rte_mempool.c index 5c688d4567..7260ce0beb 100644 --- a/lib/librte_mempool/rte_mempool.c +++ b/lib/librte_mempool/rte_mempool.c @@ -30,6 +30,7 @@ #include #include #include +#include #include "rte_mempool.h" diff --git a/lib/librte_rcu/rte_rcu_qsbr.h b/lib/librte_rcu/rte_rcu_qsbr.h index 53a5a71657..c80f15c009 100644 --- a/lib/librte_rcu/rte_rcu_qsbr.h +++ b/lib/librte_rcu/rte_rcu_qsbr.h @@ -24,6 +24,7 @@ extern "C" { #endif +#include #include #include #include diff --git a/lib/librte_reorder/rte_reorder.c b/lib/librte_reorder/rte_reorder.c index ae6e3f5780..3c9f0e2d08 100644 --- a/lib/librte_reorder/rte_reorder.c +++ b/lib/librte_reorder/rte_reorder.c @@ -11,6 +11,7 @@ #include #include #include +#include #include "rte_reorder.h" diff --git a/lib/librte_ring/rte_ring.c b/lib/librte_ring/rte_ring.c index 9ea26a631b..b30b2aa7bb 100644 --- a/lib/librte_ring/rte_ring.c +++ b/lib/librte_ring/rte_ring.c @@ -30,6 +30,7 @@ #include #include #include +#include #include "rte_ring.h"