X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;ds=sidebyside;f=lib%2Flibrte_eal%2Fcommon%2Finclude%2Frte_memory.h;h=4ae3bf75a70cb3773b09b45842c58f8b56467276;hb=73a2bc5dba483a09802ce2af90548672238d3c88;hp=b44db0032a7524eab565b1cf2cc769f173e9574d;hpb=e9d48c0072d36eb6423b45fba4ec49d0def6c36f;p=dpdk.git diff --git a/lib/librte_eal/common/include/rte_memory.h b/lib/librte_eal/common/include/rte_memory.h index b44db0032a..4ae3bf75a7 100644 --- a/lib/librte_eal/common/include/rte_memory.h +++ b/lib/librte_eal/common/include/rte_memory.h @@ -43,6 +43,10 @@ #include #include +#ifdef RTE_EXEC_ENV_LINUXAPP +#include +#endif + #ifdef __cplusplus extern "C" { #endif @@ -54,7 +58,9 @@ enum rte_page_sizes { }; #define SOCKET_ID_ANY -1 /**< Any NUMA socket. */ +#ifndef CACHE_LINE_SIZE #define CACHE_LINE_SIZE 64 /**< Cache line size. */ +#endif #define CACHE_LINE_MASK (CACHE_LINE_SIZE-1) /**< Cache line mask. */ #define CACHE_LINE_ROUNDUP(size) \ @@ -77,11 +83,18 @@ struct rte_memseg { void *addr; /**< Start virtual address. */ uint64_t addr_64; /**< Makes sure addr is always 64 bits */ }; +#ifdef RTE_LIBRTE_IVSHMEM + phys_addr_t ioremap_addr; /**< Real physical address inside the VM */ +#endif size_t len; /**< Length of the segment. */ size_t hugepage_sz; /**< The pagesize of underlying memory */ int32_t socket_id; /**< NUMA socket ID. */ uint32_t nchannel; /**< Number of channels. */ uint32_t nrank; /**< Number of ranks. */ +#ifdef RTE_LIBRTE_XEN_DOM0 + /**< store segment MFNs */ + uint64_t mfn[DOM0_NUM_MEMBLOCK]; +#endif } __attribute__((__packed__)); @@ -133,6 +146,42 @@ unsigned rte_memory_get_nchannel(void); */ unsigned rte_memory_get_nrank(void); +#ifdef RTE_LIBRTE_XEN_DOM0 +/** + * Return the physical address of elt, which is an element of the pool mp. + * + * @param memseg_id + * The mempool is from which memory segment. + * @param phy_addr + * physical address of elt. + * + * @return + * The physical address or error. + */ +phys_addr_t rte_mem_phy2mch(uint32_t memseg_id, const phys_addr_t phy_addr); + +/** + * Memory init for supporting application running on Xen domain0. + * + * @param void + * + * @return + * 0: successfully + * negative: error + */ +int rte_xen_dom0_memory_init(void); + +/** + * Attach to memory setments of primary process on Xen domain0. + * + * @param void + * + * @return + * 0: successfully + * negative: error + */ +int rte_xen_dom0_memory_attach(void); +#endif #ifdef __cplusplus } #endif