[dpdk-dev] [PATCH v3 09/14] eal: hide shared memory config
David Marchand
david.marchand at redhat.com
Thu Jul 4 09:43:34 CEST 2019
On Thu, Jun 27, 2019 at 1:39 PM Anatoly Burakov <anatoly.burakov at 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
More information about the dev
mailing list