From fe404930f63c2b4177ccb91e1f296a3d36a80ced Mon Sep 17 00:00:00 2001 From: Thomas Monjalon Date: Thu, 15 Jun 2017 19:37:00 +0200 Subject: [PATCH] mem: support page locking on FreeBSD The function rte_mem_lock_page() was added for Linux only. The file eal_common_memory.c is a better place to make it available in FreeBSD also. The issue is seen when trying to compile bnxt on FreeBSD: bnxt_hwrm.c: undefined reference to `rte_mem_lock_page' Fixes: 3097de6e6bfb ("mem: get physical address of any pointer") Reported-by: Fangfang Wei Signed-off-by: Thomas Monjalon Acked-by: Bruce Richardson --- lib/librte_eal/common/eal_common_memory.c | 12 ++++++++++++ lib/librte_eal/linuxapp/eal/eal_memory.c | 10 ---------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/lib/librte_eal/common/eal_common_memory.c b/lib/librte_eal/common/eal_common_memory.c index 6155752e91..996877ef59 100644 --- a/lib/librte_eal/common/eal_common_memory.c +++ b/lib/librte_eal/common/eal_common_memory.c @@ -35,7 +35,9 @@ #include #include #include +#include #include +#include #include #include @@ -135,6 +137,16 @@ rte_eal_memdevice_init(void) return 0; } +/* Lock page in physical memory and prevent from swapping. */ +int +rte_mem_lock_page(const void *virt) +{ + unsigned long virtual = (unsigned long)virt; + int page_size = getpagesize(); + unsigned long aligned = (virtual & ~(page_size - 1)); + return mlock((void *)aligned, page_size); +} + /* init memory subsystem */ int rte_eal_memory_init(void) diff --git a/lib/librte_eal/linuxapp/eal/eal_memory.c b/lib/librte_eal/linuxapp/eal/eal_memory.c index 9c9baf6285..e17c9cb5da 100644 --- a/lib/librte_eal/linuxapp/eal/eal_memory.c +++ b/lib/librte_eal/linuxapp/eal/eal_memory.c @@ -118,16 +118,6 @@ test_phys_addrs_available(void) } } -/* Lock page in physical memory and prevent from swapping. */ -int -rte_mem_lock_page(const void *virt) -{ - unsigned long virtual = (unsigned long)virt; - int page_size = getpagesize(); - unsigned long aligned = (virtual & ~ (page_size - 1)); - return mlock((void*)aligned, page_size); -} - /* * Get physical address of any mapped virtual address in the current process. */ -- 2.20.1