From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Monjalon Subject: [PATCH] mem: support page locking on FreeBSD Date: Thu, 15 Jun 2017 19:50:55 +0200 Message-ID: <20170615175055.27032-1-thomas@monjalon.net> References: <067B569323FEB248B5CB480E1954F4346F4155FA@SHSMSX101.ccr.corp.intel.com> Cc: fangfangx.wei@intel.com, dev@dpdk.org To: ajit.khaparde@broadcom.com Return-path: Received: from out1-smtp.messagingengine.com (out1-smtp.messagingengine.com [66.111.4.25]) by dpdk.org (Postfix) with ESMTP id 1FB1D2BB1 for ; Thu, 15 Jun 2017 19:51:19 +0200 (CEST) In-Reply-To: <067B569323FEB248B5CB480E1954F4346F4155FA@SHSMSX101.ccr.corp.intel.com> List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" 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 --- 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 6155752e9..279457001 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 9c9baf628..e17c9cb5d 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.13.1