On Thu, Jun 27, 2019 at 1:39 PM Anatoly Burakov <anatoly.bura...@intel.com> wrote:
> diff --git a/lib/librte_eal/common/include/rte_eal_memconfig.h > b/lib/librte_eal/common/include/rte_eal_memconfig.h > index 58dcbb96d..1b615c892 100644 > --- a/lib/librte_eal/common/include/rte_eal_memconfig.h > +++ b/lib/librte_eal/common/include/rte_eal_memconfig.h > @@ -5,13 +5,12 @@ > #ifndef _RTE_EAL_MEMCONFIG_H_ > #define _RTE_EAL_MEMCONFIG_H_ > > -#include <rte_config.h> > -#include <rte_tailq.h> > -#include <rte_memory.h> > -#include <rte_memzone.h> > -#include <rte_malloc_heap.h> > -#include <rte_rwlock.h> > -#include <rte_pause.h> > +/** > + * @file > + * > + * This API allows access to EAL shared memory configuration through an > API. > + */ > + > #include <rte_fbarray.h> > > #ifdef __cplusplus > @@ -38,68 +37,6 @@ struct rte_memseg_list { > struct rte_fbarray memseg_arr; > }; > > You left the rte_memseg_list definition here and the inclusion of rte_fbarray.h. Is this intentional? I would expect it to be defined in a header like rte_memory.h. If you agree, this could be done in a follow-up patch. -/** > - * 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. > */ > -- David Marchand