eal: register non-EAL threads as lcores
[dpdk.git] / lib / librte_eal / common / eal_memcfg.h
index 5732338..ea013a9 100644 (file)
@@ -5,20 +5,22 @@
 #ifndef EAL_MEMCFG_H
 #define EAL_MEMCFG_H
 
-#include <rte_config.h>
-#include <rte_eal_memconfig.h>
-#include <rte_malloc_heap.h>
 #include <rte_memory.h>
 #include <rte_memzone.h>
 #include <rte_pause.h>
+#include <rte_spinlock.h>
 #include <rte_rwlock.h>
 #include <rte_tailq.h>
 
+#include "malloc_heap.h"
+
 /**
  * Memory configuration shared across multiple processes.
  */
 struct rte_mem_config {
        volatile uint32_t magic;   /**< Magic number - sanity check. */
+       uint32_t version;
+       /**< Prevent secondary processes using different DPDK versions. */
 
        /* memory topology */
        uint32_t nchannel;    /**< Number of channels (0 if unknown). */
@@ -34,10 +36,13 @@ struct rte_mem_config {
        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_spinlock_t tlock; /**< used by timer library for thread safety. */
 
        rte_rwlock_t memory_hotplug_lock;
        /**< Indicates whether memory hotplug request is in progress. */
 
+       uint8_t mp_status; /**< Multiprocess status. */
+
        /* memory segments and zones */
        struct rte_fbarray memzones; /**< Memzone descriptors. */
 
@@ -66,6 +71,9 @@ struct rte_mem_config {
        uint32_t single_file_segments;
        /**< stored single file segments parameter. */
 
+       uint64_t tsc_hz;
+       /**< TSC rate */
+
        uint8_t dma_maskbits; /**< Keeps the more restricted dma mask. */
 };
 
@@ -81,6 +89,10 @@ eal_mcfg_update_from_internal(void);
 void
 eal_mcfg_wait_complete(void);
 
+/* check if DPDK version of current process matches one stored in the config */
+int
+eal_mcfg_check_version(void);
+
 /* set mem config as complete */
 void
 eal_mcfg_complete(void);