DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH v4 0/3] build mempool on Windows
@ 2020-07-02 13:14 Fady Bader
  2020-07-02 13:14 ` [dpdk-dev] [PATCH v4 1/3] eal: disable function versioning " Fady Bader
                   ` (2 more replies)
  0 siblings, 3 replies; 34+ messages in thread
From: Fady Bader @ 2020-07-02 13:14 UTC (permalink / raw)
  To: dev
  Cc: thomas, tbashar, talshn, yohadt, dmitry.kozliuk,
	harini.ramakrishnan, ocardona, pallavi.kadam, ranjit.menon,
	olivier.matz, arybchenko, mdr, nhorman

Added changes in order to build mempool lib on windows.

v4:
    * Fixed some commit messages and added comments to unclear code.

v3:
    * Rebased on current master and v5 of "eal/windows: ring build on Windows".

v2:
    * Replace ifndef of tracepoints with symbol export from memory management
      patchset.

Fady Bader (3):
  eal: disable function versioning on Windows
  mempool: use generic memory management
  mempool: mempool build on Windows

 lib/librte_eal/include/rte_function_versioning.h |  8 ++++++++
 lib/librte_eal/rte_eal_exports.def               |  6 ++++++
 lib/librte_eal/rte_eal_version.map               |  1 +
 lib/librte_mempool/rte_mempool.c                 | 23 ++++++++++++-----------
 lib/meson.build                                  |  2 +-
 5 files changed, 28 insertions(+), 12 deletions(-)

-- 
2.16.1.windows.4


^ permalink raw reply	[flat|nested] 34+ messages in thread

* [dpdk-dev] [PATCH v4 1/3] eal: disable function versioning on Windows
  2020-07-02 13:14 [dpdk-dev] [PATCH v4 0/3] build mempool on Windows Fady Bader
@ 2020-07-02 13:14 ` Fady Bader
  2020-07-05 11:46   ` [dpdk-dev] [PATCH v5 0/3] build mempool " Fady Bader
  2020-07-02 13:14 ` [dpdk-dev] [PATCH v4 2/3] mempool: use generic memory management Fady Bader
  2020-07-02 13:14 ` [dpdk-dev] [PATCH v4 3/3] mempool: mempool build on Windows Fady Bader
  2 siblings, 1 reply; 34+ messages in thread
From: Fady Bader @ 2020-07-02 13:14 UTC (permalink / raw)
  To: dev
  Cc: thomas, tbashar, talshn, yohadt, dmitry.kozliuk,
	harini.ramakrishnan, ocardona, pallavi.kadam, ranjit.menon,
	olivier.matz, arybchenko, mdr, nhorman

Function versioning implementation is not supported by Windows.
Function versioning was disabled on Windows.

Signed-off-by: Fady Bader <fady@mellanox.com>
---
 lib/librte_eal/include/rte_function_versioning.h | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/lib/librte_eal/include/rte_function_versioning.h b/lib/librte_eal/include/rte_function_versioning.h
index f588f2643b..c0cb13909f 100644
--- a/lib/librte_eal/include/rte_function_versioning.h
+++ b/lib/librte_eal/include/rte_function_versioning.h
@@ -11,6 +11,14 @@
 #error Use of function versioning disabled, is "use_function_versioning=true" in meson.build?
 #endif
 
+/*
+ * function versioning is disabled for Windows but shared libraries are allowed
+ * for Windows.
+ */
+#ifdef RTE_EXEC_ENV_WINDOWS
+#undef RTE_BUILD_SHARED_LIB
+#endif
+
 #ifdef RTE_BUILD_SHARED_LIB
 
 /*
-- 
2.16.1.windows.4


^ permalink raw reply	[flat|nested] 34+ messages in thread

* [dpdk-dev] [PATCH v4 2/3] mempool: use generic memory management
  2020-07-02 13:14 [dpdk-dev] [PATCH v4 0/3] build mempool on Windows Fady Bader
  2020-07-02 13:14 ` [dpdk-dev] [PATCH v4 1/3] eal: disable function versioning " Fady Bader
@ 2020-07-02 13:14 ` Fady Bader
  2020-07-03 13:16   ` Olivier Matz
  2020-07-02 13:14 ` [dpdk-dev] [PATCH v4 3/3] mempool: mempool build on Windows Fady Bader
  2 siblings, 1 reply; 34+ messages in thread
From: Fady Bader @ 2020-07-02 13:14 UTC (permalink / raw)
  To: dev
  Cc: thomas, tbashar, talshn, yohadt, dmitry.kozliuk,
	harini.ramakrishnan, ocardona, pallavi.kadam, ranjit.menon,
	olivier.matz, arybchenko, mdr, nhorman

mempool used Unix memory management calls, which are not supported
on Windows.
Used generic memory management instead.

Signed-off-by: Fady Bader <fady@mellanox.com>
---
 lib/librte_mempool/rte_mempool.c | 23 ++++++++++++-----------
 1 file changed, 12 insertions(+), 11 deletions(-)

diff --git a/lib/librte_mempool/rte_mempool.c b/lib/librte_mempool/rte_mempool.c
index 0bde995b52..1f346dcb87 100644
--- a/lib/librte_mempool/rte_mempool.c
+++ b/lib/librte_mempool/rte_mempool.c
@@ -12,7 +12,6 @@
 #include <inttypes.h>
 #include <errno.h>
 #include <sys/queue.h>
-#include <sys/mman.h>
 
 #include <rte_common.h>
 #include <rte_log.h>
@@ -32,6 +31,8 @@
 #include <rte_spinlock.h>
 #include <rte_tailq.h>
 #include <rte_function_versioning.h>
+#include <rte_eal_paging.h>
+
 
 #include "rte_mempool.h"
 #include "rte_mempool_trace.h"
@@ -148,7 +149,7 @@ get_min_page_size(int socket_id)
 
 	rte_memseg_list_walk(find_min_pagesz, &wa);
 
-	return wa.min == SIZE_MAX ? (size_t) getpagesize() : wa.min;
+	return wa.min == SIZE_MAX ? (size_t) rte_mem_page_size() : wa.min;
 }
 
 
@@ -526,7 +527,7 @@ rte_mempool_get_page_size(struct rte_mempool *mp, size_t *pg_sz)
 	else if (rte_eal_has_hugepages() || alloc_in_ext_mem)
 		*pg_sz = get_min_page_size(mp->socket_id);
 	else
-		*pg_sz = getpagesize();
+		*pg_sz = rte_mem_page_size();
 
 	rte_mempool_trace_get_page_size(mp, *pg_sz);
 	return 0;
@@ -686,7 +687,7 @@ get_anon_size(const struct rte_mempool *mp)
 	size_t min_chunk_size;
 	size_t align;
 
-	pg_sz = getpagesize();
+	pg_sz = rte_mem_page_size();
 	pg_shift = rte_bsf32(pg_sz);
 	size = rte_mempool_ops_calc_mem_size(mp, mp->size, pg_shift,
 					     &min_chunk_size, &align);
@@ -710,7 +711,7 @@ rte_mempool_memchunk_anon_free(struct rte_mempool_memhdr *memhdr,
 	if (size < 0)
 		return;
 
-	munmap(opaque, size);
+	rte_mem_unmap(opaque, size);
 }
 
 /* populate the mempool with an anonymous mapping */
@@ -740,20 +741,20 @@ rte_mempool_populate_anon(struct rte_mempool *mp)
 	}
 
 	/* get chunk of virtually continuous memory */
-	addr = mmap(NULL, size, PROT_READ | PROT_WRITE,
-		MAP_SHARED | MAP_ANONYMOUS, -1, 0);
-	if (addr == MAP_FAILED) {
+	addr = rte_mem_map(NULL, size, RTE_PROT_READ | RTE_PROT_WRITE,
+		RTE_MAP_SHARED | RTE_MAP_ANONYMOUS, -1, 0);
+	if (addr == NULL) {
 		rte_errno = errno;
 		return 0;
 	}
 	/* can't use MMAP_LOCKED, it does not exist on BSD */
-	if (mlock(addr, size) < 0) {
+	if (rte_mem_lock(addr, size) < 0) {
 		rte_errno = errno;
-		munmap(addr, size);
+		rte_mem_unmap(addr, size);
 		return 0;
 	}
 
-	ret = rte_mempool_populate_virt(mp, addr, size, getpagesize(),
+	ret = rte_mempool_populate_virt(mp, addr, size, rte_mem_page_size(),
 		rte_mempool_memchunk_anon_free, addr);
 	if (ret == 0) /* should not happen */
 		ret = -ENOBUFS;
-- 
2.16.1.windows.4


^ permalink raw reply	[flat|nested] 34+ messages in thread

* [dpdk-dev] [PATCH v4 3/3] mempool: mempool build on Windows
  2020-07-02 13:14 [dpdk-dev] [PATCH v4 0/3] build mempool on Windows Fady Bader
  2020-07-02 13:14 ` [dpdk-dev] [PATCH v4 1/3] eal: disable function versioning " Fady Bader
  2020-07-02 13:14 ` [dpdk-dev] [PATCH v4 2/3] mempool: use generic memory management Fady Bader
@ 2020-07-02 13:14 ` Fady Bader
  2020-07-03 13:17   ` Olivier Matz
  2 siblings, 1 reply; 34+ messages in thread
From: Fady Bader @ 2020-07-02 13:14 UTC (permalink / raw)
  To: dev
  Cc: thomas, tbashar, talshn, yohadt, dmitry.kozliuk,
	harini.ramakrishnan, ocardona, pallavi.kadam, ranjit.menon,
	olivier.matz, arybchenko, mdr, nhorman

Some eal functions are used by mempool lib but not exported on Windows.
The functions were exported.
Added mempool to supported libraries for Windows compilation.

Signed-off-by: Fady Bader <fady@mellanox.com>
---
 lib/librte_eal/rte_eal_exports.def | 6 ++++++
 lib/librte_eal/rte_eal_version.map | 1 +
 lib/meson.build                    | 2 +-
 3 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/lib/librte_eal/rte_eal_exports.def b/lib/librte_eal/rte_eal_exports.def
index 374e654264..984c5d1698 100644
--- a/lib/librte_eal/rte_eal_exports.def
+++ b/lib/librte_eal/rte_eal_exports.def
@@ -1,6 +1,11 @@
 EXPORTS
 	__rte_panic
+	__rte_trace_mem_per_thread_alloc
+	__rte_trace_point_emit_field
+	__rte_trace_point_register
 	per_lcore__rte_errno
+	per_lcore_trace_mem
+	per_lcore_trace_point_sz
 	rte_calloc
 	rte_calloc_socket
 	rte_bus_register
@@ -58,6 +63,7 @@ EXPORTS
 	rte_vfio_container_dma_unmap
 	rte_vlog
 	rte_realloc
+	rte_strscpy
 	rte_zmalloc
 	rte_zmalloc_socket
 
diff --git a/lib/librte_eal/rte_eal_version.map b/lib/librte_eal/rte_eal_version.map
index 196eef5afa..9ad843c754 100644
--- a/lib/librte_eal/rte_eal_version.map
+++ b/lib/librte_eal/rte_eal_version.map
@@ -395,4 +395,5 @@ INTERNAL {
 	rte_mem_map;
 	rte_mem_page_size;
 	rte_mem_unmap;
+	__rte_trace_mem_per_thread_alloc;
 };
diff --git a/lib/meson.build b/lib/meson.build
index c1b9e1633f..584d601514 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -40,7 +40,7 @@ if is_windows
 		'kvargs',
 		'eal',
 		'ring',
-		'pci',
+		'mempool', 'pci',
 	] # only supported libraries for windows
 endif
 
-- 
2.16.1.windows.4


^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [dpdk-dev] [PATCH v4 2/3] mempool: use generic memory management
  2020-07-02 13:14 ` [dpdk-dev] [PATCH v4 2/3] mempool: use generic memory management Fady Bader
@ 2020-07-03 13:16   ` Olivier Matz
  0 siblings, 0 replies; 34+ messages in thread
From: Olivier Matz @ 2020-07-03 13:16 UTC (permalink / raw)
  To: Fady Bader
  Cc: dev, thomas, tbashar, talshn, yohadt, dmitry.kozliuk,
	harini.ramakrishnan, ocardona, pallavi.kadam, ranjit.menon,
	arybchenko, mdr, nhorman

On Thu, Jul 02, 2020 at 04:14:08PM +0300, Fady Bader wrote:
> mempool used Unix memory management calls, which are not supported
> on Windows.
> Used generic memory management instead.
> 
> Signed-off-by: Fady Bader <fady@mellanox.com>

Same comment than Thomas about the use of past in the commit log.

Apart from that:
Acked-by: Olivier Matz <olivier.matz@6wind.com>

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [dpdk-dev] [PATCH v4 3/3] mempool: mempool build on Windows
  2020-07-02 13:14 ` [dpdk-dev] [PATCH v4 3/3] mempool: mempool build on Windows Fady Bader
@ 2020-07-03 13:17   ` Olivier Matz
  0 siblings, 0 replies; 34+ messages in thread
From: Olivier Matz @ 2020-07-03 13:17 UTC (permalink / raw)
  To: Fady Bader
  Cc: dev, thomas, tbashar, talshn, yohadt, dmitry.kozliuk,
	harini.ramakrishnan, ocardona, pallavi.kadam, ranjit.menon,
	arybchenko, mdr, nhorman

On Thu, Jul 02, 2020 at 04:14:09PM +0300, Fady Bader wrote:
> Some eal functions are used by mempool lib but not exported on Windows.
> The functions were exported.
> Added mempool to supported libraries for Windows compilation.
> 
> Signed-off-by: Fady Bader <fady@mellanox.com>

Acked-by: Olivier Matz <olivier.matz@6wind.com>

^ permalink raw reply	[flat|nested] 34+ messages in thread

* [dpdk-dev] [PATCH v5 0/3] build mempool on Windows
  2020-07-02 13:14 ` [dpdk-dev] [PATCH v4 1/3] eal: disable function versioning " Fady Bader
@ 2020-07-05 11:46   ` Fady Bader
  2020-07-05 11:46     ` [dpdk-dev] [PATCH v5 1/3] eal: disable function versioning " Fady Bader
                       ` (3 more replies)
  0 siblings, 4 replies; 34+ messages in thread
From: Fady Bader @ 2020-07-05 11:46 UTC (permalink / raw)
  To: dev
  Cc: thomas, tbashar, talshn, yohadt, dmitry.kozliuk,
	harini.ramakrishnan, ocardona, pallavi.kadam, ranjit.menon,
	olivier.matz, arybchenko, mdr, nhorman

Added changes in order to build mempool lib on windows.

v5:
    * disabled function versioning on Windows in lib/meson.build.

v4:
    * Fixed some commit messages and added comments to unclear code.

v3:
    * Rebased on current master and v5 of "eal/windows: ring build on Windows".

v2:
    * Replace ifndef of tracepoints with symbol export from memory management
      patchset.

Fady Bader (3):
  eal: disable function versioning on Windows
  mempool: use generic memory management
  mempool: mempool build on Windows

 lib/librte_eal/include/rte_function_versioning.h |  2 +-
 lib/librte_eal/rte_eal_exports.def               |  6 ++++++
 lib/librte_eal/rte_eal_version.map               |  1 +
 lib/librte_mempool/rte_mempool.c                 | 23 ++++++++++++-----------
 lib/meson.build                                  |  7 ++++++-
 5 files changed, 26 insertions(+), 13 deletions(-)

-- 
2.16.1.windows.4


^ permalink raw reply	[flat|nested] 34+ messages in thread

* [dpdk-dev] [PATCH v5 1/3] eal: disable function versioning on Windows
  2020-07-05 11:46   ` [dpdk-dev] [PATCH v5 0/3] build mempool " Fady Bader
@ 2020-07-05 11:46     ` Fady Bader
  2020-07-06  8:19       ` Bruce Richardson
  2020-07-05 11:46     ` [dpdk-dev] [PATCH v5 2/3] mempool: use generic memory management Fady Bader
                       ` (2 subsequent siblings)
  3 siblings, 1 reply; 34+ messages in thread
From: Fady Bader @ 2020-07-05 11:46 UTC (permalink / raw)
  To: dev
  Cc: thomas, tbashar, talshn, yohadt, dmitry.kozliuk,
	harini.ramakrishnan, ocardona, pallavi.kadam, ranjit.menon,
	olivier.matz, arybchenko, mdr, nhorman

Function versioning implementation is not supported by Windows.
Function versioning was disabled on Windows.

Signed-off-by: Fady Bader <fady@mellanox.com>
---
 lib/librte_eal/include/rte_function_versioning.h | 2 +-
 lib/meson.build                                  | 5 +++++
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/lib/librte_eal/include/rte_function_versioning.h b/lib/librte_eal/include/rte_function_versioning.h
index f588f2643b..9890551ba1 100644
--- a/lib/librte_eal/include/rte_function_versioning.h
+++ b/lib/librte_eal/include/rte_function_versioning.h
@@ -7,7 +7,7 @@
 #define _RTE_FUNCTION_VERSIONING_H_
 #include <rte_common.h>
 
-#ifndef RTE_USE_FUNCTION_VERSIONING
+#if !defined RTE_USE_FUNCTION_VERSIONING && !defined RTE_EXEC_ENV_WINDOWS
 #error Use of function versioning disabled, is "use_function_versioning=true" in meson.build?
 #endif
 
diff --git a/lib/meson.build b/lib/meson.build
index c1b9e1633f..a1ab582a51 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -107,6 +107,11 @@ foreach l:libraries
 			shared_dep = declare_dependency(include_directories: includes)
 			static_dep = shared_dep
 		else
+			if is_windows and use_function_versioning
+				message('@0@: Function versioning is not supported by Windows.'
+				.format(name))
+				use_function_versioning = false
+			endif
 
 			if use_function_versioning
 				cflags += '-DRTE_USE_FUNCTION_VERSIONING'
-- 
2.16.1.windows.4


^ permalink raw reply	[flat|nested] 34+ messages in thread

* [dpdk-dev] [PATCH v5 2/3] mempool: use generic memory management
  2020-07-05 11:46   ` [dpdk-dev] [PATCH v5 0/3] build mempool " Fady Bader
  2020-07-05 11:46     ` [dpdk-dev] [PATCH v5 1/3] eal: disable function versioning " Fady Bader
@ 2020-07-05 11:46     ` Fady Bader
  2020-07-05 11:50       ` Andrew Rybchenko
  2020-07-05 12:08       ` Dmitry Kozlyuk
  2020-07-05 11:46     ` [dpdk-dev] [PATCH v5 3/3] mempool: mempool build on Windows Fady Bader
  2020-07-05 13:47     ` [dpdk-dev] [PATCH v6 0/3] build mempool " Fady Bader
  3 siblings, 2 replies; 34+ messages in thread
From: Fady Bader @ 2020-07-05 11:46 UTC (permalink / raw)
  To: dev
  Cc: thomas, tbashar, talshn, yohadt, dmitry.kozliuk,
	harini.ramakrishnan, ocardona, pallavi.kadam, ranjit.menon,
	olivier.matz, arybchenko, mdr, nhorman

Using generic memory management calls instead of Unix memory management
calls for mempool.

Signed-off-by: Fady Bader <fady@mellanox.com>
---
 lib/librte_mempool/rte_mempool.c | 23 ++++++++++++-----------
 1 file changed, 12 insertions(+), 11 deletions(-)

diff --git a/lib/librte_mempool/rte_mempool.c b/lib/librte_mempool/rte_mempool.c
index 0bde995b52..1f346dcb87 100644
--- a/lib/librte_mempool/rte_mempool.c
+++ b/lib/librte_mempool/rte_mempool.c
@@ -12,7 +12,6 @@
 #include <inttypes.h>
 #include <errno.h>
 #include <sys/queue.h>
-#include <sys/mman.h>
 
 #include <rte_common.h>
 #include <rte_log.h>
@@ -32,6 +31,8 @@
 #include <rte_spinlock.h>
 #include <rte_tailq.h>
 #include <rte_function_versioning.h>
+#include <rte_eal_paging.h>
+
 
 #include "rte_mempool.h"
 #include "rte_mempool_trace.h"
@@ -148,7 +149,7 @@ get_min_page_size(int socket_id)
 
 	rte_memseg_list_walk(find_min_pagesz, &wa);
 
-	return wa.min == SIZE_MAX ? (size_t) getpagesize() : wa.min;
+	return wa.min == SIZE_MAX ? (size_t) rte_mem_page_size() : wa.min;
 }
 
 
@@ -526,7 +527,7 @@ rte_mempool_get_page_size(struct rte_mempool *mp, size_t *pg_sz)
 	else if (rte_eal_has_hugepages() || alloc_in_ext_mem)
 		*pg_sz = get_min_page_size(mp->socket_id);
 	else
-		*pg_sz = getpagesize();
+		*pg_sz = rte_mem_page_size();
 
 	rte_mempool_trace_get_page_size(mp, *pg_sz);
 	return 0;
@@ -686,7 +687,7 @@ get_anon_size(const struct rte_mempool *mp)
 	size_t min_chunk_size;
 	size_t align;
 
-	pg_sz = getpagesize();
+	pg_sz = rte_mem_page_size();
 	pg_shift = rte_bsf32(pg_sz);
 	size = rte_mempool_ops_calc_mem_size(mp, mp->size, pg_shift,
 					     &min_chunk_size, &align);
@@ -710,7 +711,7 @@ rte_mempool_memchunk_anon_free(struct rte_mempool_memhdr *memhdr,
 	if (size < 0)
 		return;
 
-	munmap(opaque, size);
+	rte_mem_unmap(opaque, size);
 }
 
 /* populate the mempool with an anonymous mapping */
@@ -740,20 +741,20 @@ rte_mempool_populate_anon(struct rte_mempool *mp)
 	}
 
 	/* get chunk of virtually continuous memory */
-	addr = mmap(NULL, size, PROT_READ | PROT_WRITE,
-		MAP_SHARED | MAP_ANONYMOUS, -1, 0);
-	if (addr == MAP_FAILED) {
+	addr = rte_mem_map(NULL, size, RTE_PROT_READ | RTE_PROT_WRITE,
+		RTE_MAP_SHARED | RTE_MAP_ANONYMOUS, -1, 0);
+	if (addr == NULL) {
 		rte_errno = errno;
 		return 0;
 	}
 	/* can't use MMAP_LOCKED, it does not exist on BSD */
-	if (mlock(addr, size) < 0) {
+	if (rte_mem_lock(addr, size) < 0) {
 		rte_errno = errno;
-		munmap(addr, size);
+		rte_mem_unmap(addr, size);
 		return 0;
 	}
 
-	ret = rte_mempool_populate_virt(mp, addr, size, getpagesize(),
+	ret = rte_mempool_populate_virt(mp, addr, size, rte_mem_page_size(),
 		rte_mempool_memchunk_anon_free, addr);
 	if (ret == 0) /* should not happen */
 		ret = -ENOBUFS;
-- 
2.16.1.windows.4


^ permalink raw reply	[flat|nested] 34+ messages in thread

* [dpdk-dev] [PATCH v5 3/3] mempool: mempool build on Windows
  2020-07-05 11:46   ` [dpdk-dev] [PATCH v5 0/3] build mempool " Fady Bader
  2020-07-05 11:46     ` [dpdk-dev] [PATCH v5 1/3] eal: disable function versioning " Fady Bader
  2020-07-05 11:46     ` [dpdk-dev] [PATCH v5 2/3] mempool: use generic memory management Fady Bader
@ 2020-07-05 11:46     ` Fady Bader
  2020-07-05 12:01       ` David Marchand
  2020-07-05 13:47     ` [dpdk-dev] [PATCH v6 0/3] build mempool " Fady Bader
  3 siblings, 1 reply; 34+ messages in thread
From: Fady Bader @ 2020-07-05 11:46 UTC (permalink / raw)
  To: dev
  Cc: thomas, tbashar, talshn, yohadt, dmitry.kozliuk,
	harini.ramakrishnan, ocardona, pallavi.kadam, ranjit.menon,
	olivier.matz, arybchenko, mdr, nhorman

Some eal functions are used by mempool lib but not exported on Windows.
The functions were exported.
Added mempool to supported libraries for Windows compilation.

Signed-off-by: Fady Bader <fady@mellanox.com>
---
 lib/librte_eal/rte_eal_exports.def | 6 ++++++
 lib/librte_eal/rte_eal_version.map | 1 +
 lib/meson.build                    | 2 +-
 3 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/lib/librte_eal/rte_eal_exports.def b/lib/librte_eal/rte_eal_exports.def
index 374e654264..984c5d1698 100644
--- a/lib/librte_eal/rte_eal_exports.def
+++ b/lib/librte_eal/rte_eal_exports.def
@@ -1,6 +1,11 @@
 EXPORTS
 	__rte_panic
+	__rte_trace_mem_per_thread_alloc
+	__rte_trace_point_emit_field
+	__rte_trace_point_register
 	per_lcore__rte_errno
+	per_lcore_trace_mem
+	per_lcore_trace_point_sz
 	rte_calloc
 	rte_calloc_socket
 	rte_bus_register
@@ -58,6 +63,7 @@ EXPORTS
 	rte_vfio_container_dma_unmap
 	rte_vlog
 	rte_realloc
+	rte_strscpy
 	rte_zmalloc
 	rte_zmalloc_socket
 
diff --git a/lib/librte_eal/rte_eal_version.map b/lib/librte_eal/rte_eal_version.map
index 196eef5afa..9ad843c754 100644
--- a/lib/librte_eal/rte_eal_version.map
+++ b/lib/librte_eal/rte_eal_version.map
@@ -395,4 +395,5 @@ INTERNAL {
 	rte_mem_map;
 	rte_mem_page_size;
 	rte_mem_unmap;
+	__rte_trace_mem_per_thread_alloc;
 };
diff --git a/lib/meson.build b/lib/meson.build
index a1ab582a51..9a063def41 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -40,7 +40,7 @@ if is_windows
 		'kvargs',
 		'eal',
 		'ring',
-		'pci',
+		'mempool', 'pci',
 	] # only supported libraries for windows
 endif
 
-- 
2.16.1.windows.4


^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [dpdk-dev] [PATCH v5 2/3] mempool: use generic memory management
  2020-07-05 11:46     ` [dpdk-dev] [PATCH v5 2/3] mempool: use generic memory management Fady Bader
@ 2020-07-05 11:50       ` Andrew Rybchenko
  2020-07-05 12:08       ` Dmitry Kozlyuk
  1 sibling, 0 replies; 34+ messages in thread
From: Andrew Rybchenko @ 2020-07-05 11:50 UTC (permalink / raw)
  To: Fady Bader, dev
  Cc: thomas, tbashar, talshn, yohadt, dmitry.kozliuk,
	harini.ramakrishnan, ocardona, pallavi.kadam, ranjit.menon,
	olivier.matz, mdr, nhorman

On 7/5/20 2:46 PM, Fady Bader wrote:
> Using generic memory management calls instead of Unix memory management
> calls for mempool.
> 
> Signed-off-by: Fady Bader <fady@mellanox.com>

Acked-by: Andrew Rybchenko <arybchenko@solarflare.com>


^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [dpdk-dev] [PATCH v5 3/3] mempool: mempool build on Windows
  2020-07-05 11:46     ` [dpdk-dev] [PATCH v5 3/3] mempool: mempool build on Windows Fady Bader
@ 2020-07-05 12:01       ` David Marchand
  2020-07-05 12:24         ` Fady Bader
  0 siblings, 1 reply; 34+ messages in thread
From: David Marchand @ 2020-07-05 12:01 UTC (permalink / raw)
  To: Fady Bader
  Cc: dev, Thomas Monjalon, Tasnim Bashar, Tal Shnaiderman, yohadt,
	Dmitry Kozlyuk, Harini Ramakrishnan, Omar Cardona, Pallavi Kadam,
	Ranjit Menon, Olivier Matz, Andrew Rybchenko, Ray Kinsella,
	Neil Horman

On Sun, Jul 5, 2020 at 1:47 PM Fady Bader <fady@mellanox.com> wrote:
> diff --git a/lib/librte_eal/rte_eal_version.map b/lib/librte_eal/rte_eal_version.map
> index 196eef5afa..9ad843c754 100644
> --- a/lib/librte_eal/rte_eal_version.map
> +++ b/lib/librte_eal/rte_eal_version.map
> @@ -395,4 +395,5 @@ INTERNAL {
>         rte_mem_map;
>         rte_mem_page_size;
>         rte_mem_unmap;
> +       __rte_trace_mem_per_thread_alloc;

The CI result is not there yet, but I expect issues.
This symbol is marked as experimental, not internal.
+ it is exported already in the experimental section of the EAL map.

Why did you need this line?


-- 
David Marchand


^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [dpdk-dev] [PATCH v5 2/3] mempool: use generic memory management
  2020-07-05 11:46     ` [dpdk-dev] [PATCH v5 2/3] mempool: use generic memory management Fady Bader
  2020-07-05 11:50       ` Andrew Rybchenko
@ 2020-07-05 12:08       ` Dmitry Kozlyuk
  2020-07-05 12:25         ` Fady Bader
  1 sibling, 1 reply; 34+ messages in thread
From: Dmitry Kozlyuk @ 2020-07-05 12:08 UTC (permalink / raw)
  To: Fady Bader
  Cc: dev, thomas, tbashar, talshn, yohadt, harini.ramakrishnan,
	ocardona, pallavi.kadam, ranjit.menon, olivier.matz, arybchenko,
	mdr, nhorman

On Sun,  5 Jul 2020 14:46:28 +0300, Fady Bader wrote:
[snip]
>  /* populate the mempool with an anonymous mapping */
> @@ -740,20 +741,20 @@ rte_mempool_populate_anon(struct rte_mempool *mp)
>  	}
>  
>  	/* get chunk of virtually continuous memory */
> -	addr = mmap(NULL, size, PROT_READ | PROT_WRITE,
> -		MAP_SHARED | MAP_ANONYMOUS, -1, 0);
> -	if (addr == MAP_FAILED) {
> +	addr = rte_mem_map(NULL, size, RTE_PROT_READ | RTE_PROT_WRITE,
> +		RTE_MAP_SHARED | RTE_MAP_ANONYMOUS, -1, 0);
> +	if (addr == NULL) {
>  		rte_errno = errno;

rte_errno is set by rte_mem_map(), using errno here is incorrect on Windows.

>  		return 0;
>  	}
>  	/* can't use MMAP_LOCKED, it does not exist on BSD */
> -	if (mlock(addr, size) < 0) {
> +	if (rte_mem_lock(addr, size) < 0) {
>  		rte_errno = errno;

Ditto.

[snip]

-- 
Dmitry Kozlyuk

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [dpdk-dev] [PATCH v5 3/3] mempool: mempool build on Windows
  2020-07-05 12:01       ` David Marchand
@ 2020-07-05 12:24         ` Fady Bader
  0 siblings, 0 replies; 34+ messages in thread
From: Fady Bader @ 2020-07-05 12:24 UTC (permalink / raw)
  To: David Marchand
  Cc: dev, Thomas Monjalon, Tasnim Bashar, Tal Shnaiderman, Yohad Tor,
	Dmitry Kozlyuk, Harini Ramakrishnan, Omar Cardona, Pallavi Kadam,
	Ranjit Menon, Olivier Matz, Andrew Rybchenko, Ray Kinsella,
	Neil Horman



> -----Original Message-----
> From: David Marchand <david.marchand@redhat.com>
> Sent: Sunday, July 5, 2020 3:01 PM
> To: Fady Bader <fady@mellanox.com>
> Cc: dev <dev@dpdk.org>; Thomas Monjalon <thomas@monjalon.net>; Tasnim
> Bashar <tbashar@mellanox.com>; Tal Shnaiderman <talshn@mellanox.com>;
> Yohad Tor <yohadt@mellanox.com>; Dmitry Kozlyuk
> <dmitry.kozliuk@gmail.com>; Harini Ramakrishnan
> <harini.ramakrishnan@microsoft.com>; Omar Cardona
> <ocardona@microsoft.com>; Pallavi Kadam <pallavi.kadam@intel.com>; Ranjit
> Menon <ranjit.menon@intel.com>; Olivier Matz <olivier.matz@6wind.com>;
> Andrew Rybchenko <arybchenko@solarflare.com>; Ray Kinsella
> <mdr@ashroe.eu>; Neil Horman <nhorman@tuxdriver.com>
> Subject: Re: [dpdk-dev] [PATCH v5 3/3] mempool: mempool build on Windows
> 
> On Sun, Jul 5, 2020 at 1:47 PM Fady Bader <fady@mellanox.com> wrote:
> > diff --git a/lib/librte_eal/rte_eal_version.map
> b/lib/librte_eal/rte_eal_version.map
> > index 196eef5afa..9ad843c754 100644
> > --- a/lib/librte_eal/rte_eal_version.map
> > +++ b/lib/librte_eal/rte_eal_version.map
> > @@ -395,4 +395,5 @@ INTERNAL {
> >         rte_mem_map;
> >         rte_mem_page_size;
> >         rte_mem_unmap;
> > +       __rte_trace_mem_per_thread_alloc;
> 
> The CI result is not there yet, but I expect issues.
> This symbol is marked as experimental, not internal.
> + it is exported already in the experimental section of the EAL map.

You are right, I'll remove it in the next version of the patch.

> 
> Why did you need this line? 
> 
> 
> --
> David Marchand


^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [dpdk-dev] [PATCH v5 2/3] mempool: use generic memory management
  2020-07-05 12:08       ` Dmitry Kozlyuk
@ 2020-07-05 12:25         ` Fady Bader
  0 siblings, 0 replies; 34+ messages in thread
From: Fady Bader @ 2020-07-05 12:25 UTC (permalink / raw)
  To: Dmitry Kozlyuk
  Cc: dev, Thomas Monjalon, Tasnim Bashar, Tal Shnaiderman, Yohad Tor,
	harini.ramakrishnan, ocardona, pallavi.kadam, ranjit.menon,
	olivier.matz, arybchenko, mdr, nhorman



> -----Original Message-----
> From: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
> Sent: Sunday, July 5, 2020 3:08 PM
> To: Fady Bader <fady@mellanox.com>
> Cc: dev@dpdk.org; Thomas Monjalon <thomas@monjalon.net>; Tasnim Bashar
> <tbashar@mellanox.com>; Tal Shnaiderman <talshn@mellanox.com>; Yohad Tor
> <yohadt@mellanox.com>; harini.ramakrishnan@microsoft.com;
> ocardona@microsoft.com; pallavi.kadam@intel.com; ranjit.menon@intel.com;
> olivier.matz@6wind.com; arybchenko@solarflare.com; mdr@ashroe.eu;
> nhorman@tuxdriver.com
> Subject: Re: [PATCH v5 2/3] mempool: use generic memory management
> 
> On Sun,  5 Jul 2020 14:46:28 +0300, Fady Bader wrote:
> [snip]
> >  /* populate the mempool with an anonymous mapping */ @@ -740,20
> > +741,20 @@ rte_mempool_populate_anon(struct rte_mempool *mp)
> >  	}
> >
> >  	/* get chunk of virtually continuous memory */
> > -	addr = mmap(NULL, size, PROT_READ | PROT_WRITE,
> > -		MAP_SHARED | MAP_ANONYMOUS, -1, 0);
> > -	if (addr == MAP_FAILED) {
> > +	addr = rte_mem_map(NULL, size, RTE_PROT_READ | RTE_PROT_WRITE,
> > +		RTE_MAP_SHARED | RTE_MAP_ANONYMOUS, -1, 0);
> > +	if (addr == NULL) {
> >  		rte_errno = errno;
> 
> rte_errno is set by rte_mem_map(), using errno here is incorrect on Windows.

Ok, I'll send a new version soon.

> 
> >  		return 0;
> >  	}
> >  	/* can't use MMAP_LOCKED, it does not exist on BSD */
> > -	if (mlock(addr, size) < 0) {
> > +	if (rte_mem_lock(addr, size) < 0) {
> >  		rte_errno = errno;
> 
> Ditto.
> 
> [snip]
> 
> --
> Dmitry Kozlyuk

^ permalink raw reply	[flat|nested] 34+ messages in thread

* [dpdk-dev] [PATCH v6 0/3] build mempool on Windows
  2020-07-05 11:46   ` [dpdk-dev] [PATCH v5 0/3] build mempool " Fady Bader
                       ` (2 preceding siblings ...)
  2020-07-05 11:46     ` [dpdk-dev] [PATCH v5 3/3] mempool: mempool build on Windows Fady Bader
@ 2020-07-05 13:47     ` Fady Bader
  2020-07-05 13:47       ` [dpdk-dev] [PATCH v6 1/3] eal: disable function versioning " Fady Bader
                         ` (3 more replies)
  3 siblings, 4 replies; 34+ messages in thread
From: Fady Bader @ 2020-07-05 13:47 UTC (permalink / raw)
  To: dev
  Cc: thomas, tbashar, talshn, yohadt, dmitry.kozliuk,
	harini.ramakrishnan, ocardona, pallavi.kadam, ranjit.menon,
	olivier.matz, arybchenko, mdr, nhorman

Added changes in order to build mempool lib on windows.

v6:
    * fixed generic memory management usage.
    * removed unneeded exports.

v5:
    * disabled function versioning on Windows in lib/meson.build.

v4:
    * Fixed some commit messages and added comments to unclear code.

v3:
    * Rebased on current master and v5 of "eal/windows: ring build on Windows".

v2:
    * Replace ifndef of tracepoints with symbol export from memory management
      patchset.

Fady Bader (3):
  eal: disable function versioning on Windows
  mempool: use generic memory management
  mempool: mempool build on Windows

 lib/librte_eal/include/rte_function_versioning.h |  2 +-
 lib/librte_eal/rte_eal_exports.def               |  6 ++++++
 lib/librte_mempool/rte_mempool.c                 | 26 +++++++++++-------------
 lib/meson.build                                  |  7 ++++++-
 4 files changed, 25 insertions(+), 16 deletions(-)

-- 
2.16.1.windows.4


^ permalink raw reply	[flat|nested] 34+ messages in thread

* [dpdk-dev] [PATCH v6 1/3] eal: disable function versioning on Windows
  2020-07-05 13:47     ` [dpdk-dev] [PATCH v6 0/3] build mempool " Fady Bader
@ 2020-07-05 13:47       ` Fady Bader
  2020-07-05 14:36         ` Tal Shnaiderman
  2020-07-05 20:23         ` Thomas Monjalon
  2020-07-05 13:47       ` [dpdk-dev] [PATCH v6 2/3] mempool: use generic memory management Fady Bader
                         ` (2 subsequent siblings)
  3 siblings, 2 replies; 34+ messages in thread
From: Fady Bader @ 2020-07-05 13:47 UTC (permalink / raw)
  To: dev
  Cc: thomas, tbashar, talshn, yohadt, dmitry.kozliuk,
	harini.ramakrishnan, ocardona, pallavi.kadam, ranjit.menon,
	olivier.matz, arybchenko, mdr, nhorman

Function versioning implementation is not supported by Windows.
Function versioning was disabled on Windows.

Signed-off-by: Fady Bader <fady@mellanox.com>
---
 lib/librte_eal/include/rte_function_versioning.h | 2 +-
 lib/meson.build                                  | 5 +++++
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/lib/librte_eal/include/rte_function_versioning.h b/lib/librte_eal/include/rte_function_versioning.h
index f588f2643b..9890551ba1 100644
--- a/lib/librte_eal/include/rte_function_versioning.h
+++ b/lib/librte_eal/include/rte_function_versioning.h
@@ -7,7 +7,7 @@
 #define _RTE_FUNCTION_VERSIONING_H_
 #include <rte_common.h>
 
-#ifndef RTE_USE_FUNCTION_VERSIONING
+#if !defined RTE_USE_FUNCTION_VERSIONING && !defined RTE_EXEC_ENV_WINDOWS
 #error Use of function versioning disabled, is "use_function_versioning=true" in meson.build?
 #endif
 
diff --git a/lib/meson.build b/lib/meson.build
index c1b9e1633f..a1ab582a51 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -107,6 +107,11 @@ foreach l:libraries
 			shared_dep = declare_dependency(include_directories: includes)
 			static_dep = shared_dep
 		else
+			if is_windows and use_function_versioning
+				message('@0@: Function versioning is not supported by Windows.'
+				.format(name))
+				use_function_versioning = false
+			endif
 
 			if use_function_versioning
 				cflags += '-DRTE_USE_FUNCTION_VERSIONING'
-- 
2.16.1.windows.4


^ permalink raw reply	[flat|nested] 34+ messages in thread

* [dpdk-dev] [PATCH v6 2/3] mempool: use generic memory management
  2020-07-05 13:47     ` [dpdk-dev] [PATCH v6 0/3] build mempool " Fady Bader
  2020-07-05 13:47       ` [dpdk-dev] [PATCH v6 1/3] eal: disable function versioning " Fady Bader
@ 2020-07-05 13:47       ` Fady Bader
  2020-07-05 15:26         ` Dmitry Kozlyuk
  2020-07-05 20:08         ` Thomas Monjalon
  2020-07-05 13:47       ` [dpdk-dev] [PATCH v6 3/3] mempool: mempool build on Windows Fady Bader
  2020-07-06 11:32       ` [dpdk-dev] [PATCH v7 0/3] build mempool " Fady Bader
  3 siblings, 2 replies; 34+ messages in thread
From: Fady Bader @ 2020-07-05 13:47 UTC (permalink / raw)
  To: dev
  Cc: thomas, tbashar, talshn, yohadt, dmitry.kozliuk,
	harini.ramakrishnan, ocardona, pallavi.kadam, ranjit.menon,
	olivier.matz, arybchenko, mdr, nhorman

Using generic memory management calls instead of Unix memory management
calls for mempool.

Signed-off-by: Fady Bader <fady@mellanox.com>
---
 lib/librte_mempool/rte_mempool.c | 26 ++++++++++++--------------
 1 file changed, 12 insertions(+), 14 deletions(-)

diff --git a/lib/librte_mempool/rte_mempool.c b/lib/librte_mempool/rte_mempool.c
index 0bde995b52..a2bd24984b 100644
--- a/lib/librte_mempool/rte_mempool.c
+++ b/lib/librte_mempool/rte_mempool.c
@@ -12,7 +12,6 @@
 #include <inttypes.h>
 #include <errno.h>
 #include <sys/queue.h>
-#include <sys/mman.h>
 
 #include <rte_common.h>
 #include <rte_log.h>
@@ -32,6 +31,8 @@
 #include <rte_spinlock.h>
 #include <rte_tailq.h>
 #include <rte_function_versioning.h>
+#include <rte_eal_paging.h>
+
 
 #include "rte_mempool.h"
 #include "rte_mempool_trace.h"
@@ -148,7 +149,7 @@ get_min_page_size(int socket_id)
 
 	rte_memseg_list_walk(find_min_pagesz, &wa);
 
-	return wa.min == SIZE_MAX ? (size_t) getpagesize() : wa.min;
+	return wa.min == SIZE_MAX ? (size_t) rte_mem_page_size() : wa.min;
 }
 
 
@@ -526,7 +527,7 @@ rte_mempool_get_page_size(struct rte_mempool *mp, size_t *pg_sz)
 	else if (rte_eal_has_hugepages() || alloc_in_ext_mem)
 		*pg_sz = get_min_page_size(mp->socket_id);
 	else
-		*pg_sz = getpagesize();
+		*pg_sz = rte_mem_page_size();
 
 	rte_mempool_trace_get_page_size(mp, *pg_sz);
 	return 0;
@@ -686,7 +687,7 @@ get_anon_size(const struct rte_mempool *mp)
 	size_t min_chunk_size;
 	size_t align;
 
-	pg_sz = getpagesize();
+	pg_sz = rte_mem_page_size();
 	pg_shift = rte_bsf32(pg_sz);
 	size = rte_mempool_ops_calc_mem_size(mp, mp->size, pg_shift,
 					     &min_chunk_size, &align);
@@ -710,7 +711,7 @@ rte_mempool_memchunk_anon_free(struct rte_mempool_memhdr *memhdr,
 	if (size < 0)
 		return;
 
-	munmap(opaque, size);
+	rte_mem_unmap(opaque, size);
 }
 
 /* populate the mempool with an anonymous mapping */
@@ -740,20 +741,17 @@ rte_mempool_populate_anon(struct rte_mempool *mp)
 	}
 
 	/* get chunk of virtually continuous memory */
-	addr = mmap(NULL, size, PROT_READ | PROT_WRITE,
-		MAP_SHARED | MAP_ANONYMOUS, -1, 0);
-	if (addr == MAP_FAILED) {
-		rte_errno = errno;
+	addr = rte_mem_map(NULL, size, RTE_PROT_READ | RTE_PROT_WRITE,
+		RTE_MAP_SHARED | RTE_MAP_ANONYMOUS, -1, 0);
+	if (addr == NULL)
 		return 0;
-	}
 	/* can't use MMAP_LOCKED, it does not exist on BSD */
-	if (mlock(addr, size) < 0) {
-		rte_errno = errno;
-		munmap(addr, size);
+	if (rte_mem_lock(addr, size) < 0) {
+		rte_mem_unmap(addr, size);
 		return 0;
 	}
 
-	ret = rte_mempool_populate_virt(mp, addr, size, getpagesize(),
+	ret = rte_mempool_populate_virt(mp, addr, size, rte_mem_page_size(),
 		rte_mempool_memchunk_anon_free, addr);
 	if (ret == 0) /* should not happen */
 		ret = -ENOBUFS;
-- 
2.16.1.windows.4


^ permalink raw reply	[flat|nested] 34+ messages in thread

* [dpdk-dev] [PATCH v6 3/3] mempool: mempool build on Windows
  2020-07-05 13:47     ` [dpdk-dev] [PATCH v6 0/3] build mempool " Fady Bader
  2020-07-05 13:47       ` [dpdk-dev] [PATCH v6 1/3] eal: disable function versioning " Fady Bader
  2020-07-05 13:47       ` [dpdk-dev] [PATCH v6 2/3] mempool: use generic memory management Fady Bader
@ 2020-07-05 13:47       ` Fady Bader
  2020-07-05 20:25         ` Thomas Monjalon
  2020-07-06 11:32       ` [dpdk-dev] [PATCH v7 0/3] build mempool " Fady Bader
  3 siblings, 1 reply; 34+ messages in thread
From: Fady Bader @ 2020-07-05 13:47 UTC (permalink / raw)
  To: dev
  Cc: thomas, tbashar, talshn, yohadt, dmitry.kozliuk,
	harini.ramakrishnan, ocardona, pallavi.kadam, ranjit.menon,
	olivier.matz, arybchenko, mdr, nhorman

Some eal functions are used by mempool lib but not exported on Windows.
The functions were exported.
Added mempool to supported libraries for Windows compilation.

Signed-off-by: Fady Bader <fady@mellanox.com>
---
 lib/librte_eal/rte_eal_exports.def | 6 ++++++
 lib/meson.build                    | 2 +-
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/lib/librte_eal/rte_eal_exports.def b/lib/librte_eal/rte_eal_exports.def
index 374e654264..984c5d1698 100644
--- a/lib/librte_eal/rte_eal_exports.def
+++ b/lib/librte_eal/rte_eal_exports.def
@@ -1,6 +1,11 @@
 EXPORTS
 	__rte_panic
+	__rte_trace_mem_per_thread_alloc
+	__rte_trace_point_emit_field
+	__rte_trace_point_register
 	per_lcore__rte_errno
+	per_lcore_trace_mem
+	per_lcore_trace_point_sz
 	rte_calloc
 	rte_calloc_socket
 	rte_bus_register
@@ -58,6 +63,7 @@ EXPORTS
 	rte_vfio_container_dma_unmap
 	rte_vlog
 	rte_realloc
+	rte_strscpy
 	rte_zmalloc
 	rte_zmalloc_socket
 
diff --git a/lib/meson.build b/lib/meson.build
index a1ab582a51..9a063def41 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -40,7 +40,7 @@ if is_windows
 		'kvargs',
 		'eal',
 		'ring',
-		'pci',
+		'mempool', 'pci',
 	] # only supported libraries for windows
 endif
 
-- 
2.16.1.windows.4


^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [dpdk-dev] [PATCH v6 1/3] eal: disable function versioning on Windows
  2020-07-05 13:47       ` [dpdk-dev] [PATCH v6 1/3] eal: disable function versioning " Fady Bader
@ 2020-07-05 14:36         ` Tal Shnaiderman
  2020-07-05 20:23         ` Thomas Monjalon
  1 sibling, 0 replies; 34+ messages in thread
From: Tal Shnaiderman @ 2020-07-05 14:36 UTC (permalink / raw)
  To: Fady Bader, dev
  Cc: Thomas Monjalon, Tasnim Bashar, Yohad Tor, dmitry.kozliuk,
	harini.ramakrishnan, ocardona, pallavi.kadam, ranjit.menon,
	olivier.matz, arybchenko, mdr, nhorman

> From: Fady Bader <fady@mellanox.com>
> Subject: [PATCH v6 1/3] eal: disable function versioning on Windows
> 
> Function versioning implementation is not supported by Windows.
> Function versioning was disabled on Windows.
> 
> Signed-off-by: Fady Bader <fady@mellanox.com>

Reviewed-by: Tal Shnaiderman <talshn@mellanox.com>

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [dpdk-dev] [PATCH v6 2/3] mempool: use generic memory management
  2020-07-05 13:47       ` [dpdk-dev] [PATCH v6 2/3] mempool: use generic memory management Fady Bader
@ 2020-07-05 15:26         ` Dmitry Kozlyuk
  2020-07-05 20:08         ` Thomas Monjalon
  1 sibling, 0 replies; 34+ messages in thread
From: Dmitry Kozlyuk @ 2020-07-05 15:26 UTC (permalink / raw)
  To: Fady Bader
  Cc: dev, thomas, tbashar, talshn, yohadt, harini.ramakrishnan,
	ocardona, pallavi.kadam, ranjit.menon, olivier.matz, arybchenko,
	mdr, nhorman

On Sun,  5 Jul 2020 16:47:45 +0300, Fady Bader wrote:
> Using generic memory management calls instead of Unix memory management
> calls for mempool.
> 
> Signed-off-by: Fady Bader <fady@mellanox.com>
[snip]

>  /* populate the mempool with an anonymous mapping */
> @@ -740,20 +741,17 @@ rte_mempool_populate_anon(struct rte_mempool *mp)
>  	}
>  
>  	/* get chunk of virtually continuous memory */
> -	addr = mmap(NULL, size, PROT_READ | PROT_WRITE,
> -		MAP_SHARED | MAP_ANONYMOUS, -1, 0);
> -	if (addr == MAP_FAILED) {
> -		rte_errno = errno;
> +	addr = rte_mem_map(NULL, size, RTE_PROT_READ | RTE_PROT_WRITE,
> +		RTE_MAP_SHARED | RTE_MAP_ANONYMOUS, -1, 0);
> +	if (addr == NULL)
>  		return 0;
> -	}
>  	/* can't use MMAP_LOCKED, it does not exist on BSD */

This comment is for removed mmap(), OTOH, it explains why map+lock approach
is used, so perhaps it can be kept.

Reviewed-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>

-- 
Dmitry Kozlyuk

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [dpdk-dev] [PATCH v6 2/3] mempool: use generic memory management
  2020-07-05 13:47       ` [dpdk-dev] [PATCH v6 2/3] mempool: use generic memory management Fady Bader
  2020-07-05 15:26         ` Dmitry Kozlyuk
@ 2020-07-05 20:08         ` Thomas Monjalon
  1 sibling, 0 replies; 34+ messages in thread
From: Thomas Monjalon @ 2020-07-05 20:08 UTC (permalink / raw)
  To: Fady Bader
  Cc: dev, tbashar, talshn, yohadt, dmitry.kozliuk,
	harini.ramakrishnan, ocardona, pallavi.kadam, ranjit.menon,
	olivier.matz, arybchenko, mdr, nhorman

05/07/2020 15:47, Fady Bader:
> Using generic memory management calls instead of Unix memory management
> calls for mempool.
> 
> Signed-off-by: Fady Bader <fady@mellanox.com>

Acks received on previous versions are missing.
Please attention to all details.




^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [dpdk-dev] [PATCH v6 1/3] eal: disable function versioning on Windows
  2020-07-05 13:47       ` [dpdk-dev] [PATCH v6 1/3] eal: disable function versioning " Fady Bader
  2020-07-05 14:36         ` Tal Shnaiderman
@ 2020-07-05 20:23         ` Thomas Monjalon
  2020-07-06  7:02           ` Fady Bader
  1 sibling, 1 reply; 34+ messages in thread
From: Thomas Monjalon @ 2020-07-05 20:23 UTC (permalink / raw)
  To: Fady Bader
  Cc: dev, tbashar, talshn, yohadt, dmitry.kozliuk,
	harini.ramakrishnan, ocardona, pallavi.kadam, ranjit.menon,
	olivier.matz, arybchenko, mdr, nhorman

05/07/2020 15:47, Fady Bader:
> Function versioning implementation is not supported by Windows.
> Function versioning was disabled on Windows.

was -> is

> Signed-off-by: Fady Bader <fady@mellanox.com>
> ---
>  lib/librte_eal/include/rte_function_versioning.h | 2 +-
>  lib/meson.build                                  | 5 +++++
>  2 files changed, 6 insertions(+), 1 deletion(-)

As suggested by Ray, we should add a note in the documentation
about the ABI compatibility. Because we have no function versioning,
we cannot ensure ABI compatibility on Windows.

I recommend adding this text in doc/guides/windows_gsg/intro.rst
under "Limitations":
"
The :doc:`../contributing/abi_policy` cannot be respected for Windows.
Minor ABI versions may be incompatible
because function versioning is not supported on Windows.
"



^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [dpdk-dev] [PATCH v6 3/3] mempool: mempool build on Windows
  2020-07-05 13:47       ` [dpdk-dev] [PATCH v6 3/3] mempool: mempool build on Windows Fady Bader
@ 2020-07-05 20:25         ` Thomas Monjalon
  0 siblings, 0 replies; 34+ messages in thread
From: Thomas Monjalon @ 2020-07-05 20:25 UTC (permalink / raw)
  To: Fady Bader
  Cc: dev, tbashar, talshn, yohadt, dmitry.kozliuk,
	harini.ramakrishnan, ocardona, pallavi.kadam, ranjit.menon,
	olivier.matz, arybchenko, mdr, nhorman

05/07/2020 15:47, Fady Bader:
> Some eal functions are used by mempool lib but not exported on Windows.

eal -> EAL

> The functions were exported.
> Added mempool to supported libraries for Windows compilation.

Please reserve the past tense for stating how it was before the patch.




^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [dpdk-dev] [PATCH v6 1/3] eal: disable function versioning on Windows
  2020-07-05 20:23         ` Thomas Monjalon
@ 2020-07-06  7:02           ` Fady Bader
  0 siblings, 0 replies; 34+ messages in thread
From: Fady Bader @ 2020-07-06  7:02 UTC (permalink / raw)
  To: Thomas Monjalon
  Cc: dev, Tasnim Bashar, Tal Shnaiderman, Yohad Tor, dmitry.kozliuk,
	harini.ramakrishnan, ocardona, pallavi.kadam, ranjit.menon,
	olivier.matz, arybchenko, mdr, nhorman



> -----Original Message-----
> From: Thomas Monjalon <thomas@monjalon.net>
> Sent: Sunday, July 5, 2020 11:24 PM
> To: Fady Bader <fady@mellanox.com>
> Cc: dev@dpdk.org; Tasnim Bashar <tbashar@mellanox.com>; Tal Shnaiderman
> <talshn@mellanox.com>; Yohad Tor <yohadt@mellanox.com>;
> dmitry.kozliuk@gmail.com; harini.ramakrishnan@microsoft.com;
> ocardona@microsoft.com; pallavi.kadam@intel.com; ranjit.menon@intel.com;
> olivier.matz@6wind.com; arybchenko@solarflare.com; mdr@ashroe.eu;
> nhorman@tuxdriver.com
> Subject: Re: [dpdk-dev] [PATCH v6 1/3] eal: disable function versioning on
> Windows
> 
> 05/07/2020 15:47, Fady Bader:
> > Function versioning implementation is not supported by Windows.
> > Function versioning was disabled on Windows.
> 
> was -> is
> 
> > Signed-off-by: Fady Bader <fady@mellanox.com>
> > ---
> >  lib/librte_eal/include/rte_function_versioning.h | 2 +-
> >  lib/meson.build                                  | 5 +++++
> >  2 files changed, 6 insertions(+), 1 deletion(-)
> 
> As suggested by Ray, we should add a note in the documentation about the ABI
> compatibility. Because we have no function versioning, we cannot ensure ABI
> compatibility on Windows.
> 
> I recommend adding this text in doc/guides/windows_gsg/intro.rst under
> "Limitations":
> "
> The :doc:`../contributing/abi_policy` cannot be respected for Windows.
> Minor ABI versions may be incompatible
> because function versioning is not supported on Windows.
> "

Ok, I'll send a new patch with the changes soon.

> 


^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [dpdk-dev] [PATCH v5 1/3] eal: disable function versioning on Windows
  2020-07-05 11:46     ` [dpdk-dev] [PATCH v5 1/3] eal: disable function versioning " Fady Bader
@ 2020-07-06  8:19       ` Bruce Richardson
  2020-07-06 10:39         ` Fady Bader
  0 siblings, 1 reply; 34+ messages in thread
From: Bruce Richardson @ 2020-07-06  8:19 UTC (permalink / raw)
  To: Fady Bader
  Cc: dev, thomas, tbashar, talshn, yohadt, dmitry.kozliuk,
	harini.ramakrishnan, ocardona, pallavi.kadam, ranjit.menon,
	olivier.matz, arybchenko, mdr, nhorman

On Sun, Jul 05, 2020 at 02:46:27PM +0300, Fady Bader wrote:
> Function versioning implementation is not supported by Windows.
> Function versioning was disabled on Windows.
> 
> Signed-off-by: Fady Bader <fady@mellanox.com>
> ---
>  lib/librte_eal/include/rte_function_versioning.h | 2 +-
>  lib/meson.build                                  | 5 +++++
>  2 files changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/lib/librte_eal/include/rte_function_versioning.h b/lib/librte_eal/include/rte_function_versioning.h
> index f588f2643b..9890551ba1 100644
> --- a/lib/librte_eal/include/rte_function_versioning.h
> +++ b/lib/librte_eal/include/rte_function_versioning.h
> @@ -7,7 +7,7 @@
>  #define _RTE_FUNCTION_VERSIONING_H_
>  #include <rte_common.h>
>  
> -#ifndef RTE_USE_FUNCTION_VERSIONING
> +#if !defined RTE_USE_FUNCTION_VERSIONING && !defined RTE_EXEC_ENV_WINDOWS
>  #error Use of function versioning disabled, is "use_function_versioning=true" in meson.build?
>  #endif
>  
> diff --git a/lib/meson.build b/lib/meson.build
> index c1b9e1633f..a1ab582a51 100644
> --- a/lib/meson.build
> +++ b/lib/meson.build
> @@ -107,6 +107,11 @@ foreach l:libraries
>  			shared_dep = declare_dependency(include_directories: includes)
>  			static_dep = shared_dep
>  		else
> +			if is_windows and use_function_versioning
> +				message('@0@: Function versioning is not supported by Windows.'
> +				.format(name))
> +				use_function_versioning = false
> +			endif
>  
>  			if use_function_versioning
>  				cflags += '-DRTE_USE_FUNCTION_VERSIONING'
> -- 

I wonder if this patch can be simplified as follows.

Presumably the use of the RTE_USE_FUNCTION_VERSIONING cflag doesn't cause
any problems building on windows, since it's basically nothing except a
flag to indicate the build is configured properly, so that block can be
left intact. Instead what is needed to be disabled is the
RTE_BUILD_SHARED_LIB setting so that we use the static macros. Therefore,
I think the same result can be got by just changing the following line
in lib/meson.build:

@@ -138,7 +138,7 @@ foreach l:libraries
                                        include_directories: includes,
                                        dependencies: static_deps)

-                       if not use_function_versioning
+                       if not use_function_versioning or is_windows
                                # use pre-build objects to build shared lib
                                sources = []
                                objs += static_lib.extract_all_objects(recursive: false)

Then no error message disabling is needed in windows. I also don't think a
message about function versioning not being supported on windows is
necessary. It's not something the user can do anything about himself
anyway. If we want such a message I think it should just be printed once at
the start of the configuration process, rather than each time we hit a
versioned library.

Regards,
/Bruce

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [dpdk-dev] [PATCH v5 1/3] eal: disable function versioning on Windows
  2020-07-06  8:19       ` Bruce Richardson
@ 2020-07-06 10:39         ` Fady Bader
  0 siblings, 0 replies; 34+ messages in thread
From: Fady Bader @ 2020-07-06 10:39 UTC (permalink / raw)
  To: Bruce Richardson
  Cc: dev, Thomas Monjalon, Tasnim Bashar, Tal Shnaiderman, Yohad Tor,
	dmitry.kozliuk, harini.ramakrishnan, ocardona, pallavi.kadam,
	ranjit.menon, olivier.matz, arybchenko, mdr, nhorman



> -----Original Message-----
> From: Bruce Richardson <bruce.richardson@intel.com>
> Sent: Monday, July 6, 2020 11:20 AM
> To: Fady Bader <fady@mellanox.com>
> Cc: dev@dpdk.org; Thomas Monjalon <thomas@monjalon.net>; Tasnim Bashar
> <tbashar@mellanox.com>; Tal Shnaiderman <talshn@mellanox.com>; Yohad Tor
> <yohadt@mellanox.com>; dmitry.kozliuk@gmail.com;
> harini.ramakrishnan@microsoft.com; ocardona@microsoft.com;
> pallavi.kadam@intel.com; ranjit.menon@intel.com; olivier.matz@6wind.com;
> arybchenko@solarflare.com; mdr@ashroe.eu; nhorman@tuxdriver.com
> Subject: Re: [dpdk-dev] [PATCH v5 1/3] eal: disable function versioning on
> Windows
> 
> On Sun, Jul 05, 2020 at 02:46:27PM +0300, Fady Bader wrote:
> > Function versioning implementation is not supported by Windows.
> > Function versioning was disabled on Windows.
> >
> > Signed-off-by: Fady Bader <fady@mellanox.com>
> > ---
> >  lib/librte_eal/include/rte_function_versioning.h | 2 +-
> >  lib/meson.build                                  | 5 +++++
> >  2 files changed, 6 insertions(+), 1 deletion(-)
> >
> > diff --git a/lib/librte_eal/include/rte_function_versioning.h
> > b/lib/librte_eal/include/rte_function_versioning.h
> > index f588f2643b..9890551ba1 100644
> > --- a/lib/librte_eal/include/rte_function_versioning.h
> > +++ b/lib/librte_eal/include/rte_function_versioning.h
> > @@ -7,7 +7,7 @@
> >  #define _RTE_FUNCTION_VERSIONING_H_
> >  #include <rte_common.h>
> >
> > -#ifndef RTE_USE_FUNCTION_VERSIONING
> > +#if !defined RTE_USE_FUNCTION_VERSIONING && !defined
> > +RTE_EXEC_ENV_WINDOWS
> >  #error Use of function versioning disabled, is "use_function_versioning=true"
> in meson.build?
> >  #endif
> >
> > diff --git a/lib/meson.build b/lib/meson.build index
> > c1b9e1633f..a1ab582a51 100644
> > --- a/lib/meson.build
> > +++ b/lib/meson.build
> > @@ -107,6 +107,11 @@ foreach l:libraries
> >  			shared_dep = declare_dependency(include_directories:
> includes)
> >  			static_dep = shared_dep
> >  		else
> > +			if is_windows and use_function_versioning
> > +				message('@0@: Function versioning is not
> supported by Windows.'
> > +				.format(name))
> > +				use_function_versioning = false
> > +			endif
> >
> >  			if use_function_versioning
> >  				cflags += '-DRTE_USE_FUNCTION_VERSIONING'
> > --
> 
> I wonder if this patch can be simplified as follows.
> 
> Presumably the use of the RTE_USE_FUNCTION_VERSIONING cflag doesn't
> cause any problems building on windows, since it's basically nothing except a flag
> to indicate the build is configured properly, so that block can be left intact.
> Instead what is needed to be disabled is the RTE_BUILD_SHARED_LIB setting so
> that we use the static macros. Therefore, I think the same result can be got by
> just changing the following line in lib/meson.build:
> 
> @@ -138,7 +138,7 @@ foreach l:libraries
>                                         include_directories: includes,
>                                         dependencies: static_deps)
> 
> -                       if not use_function_versioning
> +                       if not use_function_versioning or is_windows
>                                 # use pre-build objects to build shared lib
>                                 sources = []
>                                 objs += static_lib.extract_all_objects(recursive: false)

Good point, the patch is much simpler now.
I'll send a new version soon.

> 
> Then no error message disabling is needed in windows. I also don't think a
> message about function versioning not being supported on windows is
> necessary. It's not something the user can do anything about himself anyway. If
> we want such a message I think it should just be printed once at the start of the
> configuration process, rather than each time we hit a versioned library.

It was added in order to avoid confusions in case Linux developers try to run the 
project on windows. I'll print it once.

> 
> Regards,
> /Bruce

^ permalink raw reply	[flat|nested] 34+ messages in thread

* [dpdk-dev] [PATCH v7 0/3] build mempool on Windows
  2020-07-05 13:47     ` [dpdk-dev] [PATCH v6 0/3] build mempool " Fady Bader
                         ` (2 preceding siblings ...)
  2020-07-05 13:47       ` [dpdk-dev] [PATCH v6 3/3] mempool: mempool build on Windows Fady Bader
@ 2020-07-06 11:32       ` Fady Bader
  2020-07-06 11:32         ` [dpdk-dev] [PATCH v7 1/3] eal: disable function versioning " Fady Bader
                           ` (3 more replies)
  3 siblings, 4 replies; 34+ messages in thread
From: Fady Bader @ 2020-07-06 11:32 UTC (permalink / raw)
  To: dev
  Cc: thomas, tbashar, talshn, yohadt, dmitry.kozliuk,
	harini.ramakrishnan, ocardona, pallavi.kadam, ranjit.menon,
	olivier.matz, arybchenko, mdr, nhorman

v7:
    * fixed commit messages style issues.
    * disabled function versioning in a simpler way.

v6:
    * fixed generic memory management usage.
    * removed unneeded exports.

v5:
    * disabled function versioning on Windows in lib/meson.build.

v4:
    * Fixed some commit messages and added comments to unclear code.

v3:
    * Rebased on current master and v5 of "eal/windows: ring build on Windows".

v2:
    * Replace ifndef of tracepoints with symbol export from memory management
      patchset.

Fady Bader (3):
  eal: disable function versioning on Windows
  mempool: use generic memory management
  mempool: mempool build on Windows

 doc/guides/windows_gsg/intro.rst   |  4 ++++
 lib/librte_eal/rte_eal_exports.def |  6 ++++++
 lib/librte_mempool/rte_mempool.c   | 26 ++++++++++++--------------
 lib/meson.build                    |  8 ++++++--
 4 files changed, 28 insertions(+), 16 deletions(-)

-- 
2.16.1.windows.4


^ permalink raw reply	[flat|nested] 34+ messages in thread

* [dpdk-dev] [PATCH v7 1/3] eal: disable function versioning on Windows
  2020-07-06 11:32       ` [dpdk-dev] [PATCH v7 0/3] build mempool " Fady Bader
@ 2020-07-06 11:32         ` Fady Bader
  2020-07-06 12:22           ` Bruce Richardson
  2020-07-06 11:32         ` [dpdk-dev] [PATCH v7 2/3] mempool: use generic memory management Fady Bader
                           ` (2 subsequent siblings)
  3 siblings, 1 reply; 34+ messages in thread
From: Fady Bader @ 2020-07-06 11:32 UTC (permalink / raw)
  To: dev
  Cc: thomas, tbashar, talshn, yohadt, dmitry.kozliuk,
	harini.ramakrishnan, ocardona, pallavi.kadam, ranjit.menon,
	olivier.matz, arybchenko, mdr, nhorman

Function versioning implementation is not supported by Windows.
Function versioning is disabled on Windows.

Signed-off-by: Fady Bader <fady@mellanox.com>
---
 doc/guides/windows_gsg/intro.rst | 4 ++++
 lib/meson.build                  | 6 +++++-
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/doc/guides/windows_gsg/intro.rst b/doc/guides/windows_gsg/intro.rst
index a0285732df..58c6246404 100644
--- a/doc/guides/windows_gsg/intro.rst
+++ b/doc/guides/windows_gsg/intro.rst
@@ -18,3 +18,7 @@ DPDK for Windows is currently a work in progress. Not all DPDK source files
 compile. Support is being added in pieces so as to limit the overall scope
 of any individual patch series. The goal is to be able to run any DPDK
 application natively on Windows.
+
+The :doc:`../contributing/abi_policy` cannot be respected for Windows.
+Minor ABI versions may be incompatible
+because function versioning is not supported on Windows.
diff --git a/lib/meson.build b/lib/meson.build
index c1b9e1633f..dadf151f78 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -107,6 +107,10 @@ foreach l:libraries
 			shared_dep = declare_dependency(include_directories: includes)
 			static_dep = shared_dep
 		else
+			if is_windows and use_function_versioning
+				message('@0@: Function versioning is not supported by Windows.'
+				.format(name))
+			endif
 
 			if use_function_versioning
 				cflags += '-DRTE_USE_FUNCTION_VERSIONING'
@@ -138,7 +142,7 @@ foreach l:libraries
 					include_directories: includes,
 					dependencies: static_deps)
 
-			if not use_function_versioning
+			if not use_function_versioning or is_windows
 				# use pre-build objects to build shared lib
 				sources = []
 				objs += static_lib.extract_all_objects(recursive: false)
-- 
2.16.1.windows.4


^ permalink raw reply	[flat|nested] 34+ messages in thread

* [dpdk-dev] [PATCH v7 2/3] mempool: use generic memory management
  2020-07-06 11:32       ` [dpdk-dev] [PATCH v7 0/3] build mempool " Fady Bader
  2020-07-06 11:32         ` [dpdk-dev] [PATCH v7 1/3] eal: disable function versioning " Fady Bader
@ 2020-07-06 11:32         ` Fady Bader
  2020-07-06 11:32         ` [dpdk-dev] [PATCH v7 3/3] mempool: mempool build on Windows Fady Bader
  2020-07-06 23:29         ` [dpdk-dev] [PATCH v7 0/3] build mempool " Thomas Monjalon
  3 siblings, 0 replies; 34+ messages in thread
From: Fady Bader @ 2020-07-06 11:32 UTC (permalink / raw)
  To: dev
  Cc: thomas, tbashar, talshn, yohadt, dmitry.kozliuk,
	harini.ramakrishnan, ocardona, pallavi.kadam, ranjit.menon,
	olivier.matz, arybchenko, mdr, nhorman

Using generic memory management calls instead of Unix memory management
calls for mempool.

Signed-off-by: Fady Bader <fady@mellanox.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
---
 lib/librte_mempool/rte_mempool.c | 26 ++++++++++++--------------
 1 file changed, 12 insertions(+), 14 deletions(-)

diff --git a/lib/librte_mempool/rte_mempool.c b/lib/librte_mempool/rte_mempool.c
index 0bde995b52..a2bd24984b 100644
--- a/lib/librte_mempool/rte_mempool.c
+++ b/lib/librte_mempool/rte_mempool.c
@@ -12,7 +12,6 @@
 #include <inttypes.h>
 #include <errno.h>
 #include <sys/queue.h>
-#include <sys/mman.h>
 
 #include <rte_common.h>
 #include <rte_log.h>
@@ -32,6 +31,8 @@
 #include <rte_spinlock.h>
 #include <rte_tailq.h>
 #include <rte_function_versioning.h>
+#include <rte_eal_paging.h>
+
 
 #include "rte_mempool.h"
 #include "rte_mempool_trace.h"
@@ -148,7 +149,7 @@ get_min_page_size(int socket_id)
 
 	rte_memseg_list_walk(find_min_pagesz, &wa);
 
-	return wa.min == SIZE_MAX ? (size_t) getpagesize() : wa.min;
+	return wa.min == SIZE_MAX ? (size_t) rte_mem_page_size() : wa.min;
 }
 
 
@@ -526,7 +527,7 @@ rte_mempool_get_page_size(struct rte_mempool *mp, size_t *pg_sz)
 	else if (rte_eal_has_hugepages() || alloc_in_ext_mem)
 		*pg_sz = get_min_page_size(mp->socket_id);
 	else
-		*pg_sz = getpagesize();
+		*pg_sz = rte_mem_page_size();
 
 	rte_mempool_trace_get_page_size(mp, *pg_sz);
 	return 0;
@@ -686,7 +687,7 @@ get_anon_size(const struct rte_mempool *mp)
 	size_t min_chunk_size;
 	size_t align;
 
-	pg_sz = getpagesize();
+	pg_sz = rte_mem_page_size();
 	pg_shift = rte_bsf32(pg_sz);
 	size = rte_mempool_ops_calc_mem_size(mp, mp->size, pg_shift,
 					     &min_chunk_size, &align);
@@ -710,7 +711,7 @@ rte_mempool_memchunk_anon_free(struct rte_mempool_memhdr *memhdr,
 	if (size < 0)
 		return;
 
-	munmap(opaque, size);
+	rte_mem_unmap(opaque, size);
 }
 
 /* populate the mempool with an anonymous mapping */
@@ -740,20 +741,17 @@ rte_mempool_populate_anon(struct rte_mempool *mp)
 	}
 
 	/* get chunk of virtually continuous memory */
-	addr = mmap(NULL, size, PROT_READ | PROT_WRITE,
-		MAP_SHARED | MAP_ANONYMOUS, -1, 0);
-	if (addr == MAP_FAILED) {
-		rte_errno = errno;
+	addr = rte_mem_map(NULL, size, RTE_PROT_READ | RTE_PROT_WRITE,
+		RTE_MAP_SHARED | RTE_MAP_ANONYMOUS, -1, 0);
+	if (addr == NULL)
 		return 0;
-	}
 	/* can't use MMAP_LOCKED, it does not exist on BSD */
-	if (mlock(addr, size) < 0) {
-		rte_errno = errno;
-		munmap(addr, size);
+	if (rte_mem_lock(addr, size) < 0) {
+		rte_mem_unmap(addr, size);
 		return 0;
 	}
 
-	ret = rte_mempool_populate_virt(mp, addr, size, getpagesize(),
+	ret = rte_mempool_populate_virt(mp, addr, size, rte_mem_page_size(),
 		rte_mempool_memchunk_anon_free, addr);
 	if (ret == 0) /* should not happen */
 		ret = -ENOBUFS;
-- 
2.16.1.windows.4


^ permalink raw reply	[flat|nested] 34+ messages in thread

* [dpdk-dev] [PATCH v7 3/3] mempool: mempool build on Windows
  2020-07-06 11:32       ` [dpdk-dev] [PATCH v7 0/3] build mempool " Fady Bader
  2020-07-06 11:32         ` [dpdk-dev] [PATCH v7 1/3] eal: disable function versioning " Fady Bader
  2020-07-06 11:32         ` [dpdk-dev] [PATCH v7 2/3] mempool: use generic memory management Fady Bader
@ 2020-07-06 11:32         ` Fady Bader
  2020-07-06 23:29         ` [dpdk-dev] [PATCH v7 0/3] build mempool " Thomas Monjalon
  3 siblings, 0 replies; 34+ messages in thread
From: Fady Bader @ 2020-07-06 11:32 UTC (permalink / raw)
  To: dev
  Cc: thomas, tbashar, talshn, yohadt, dmitry.kozliuk,
	harini.ramakrishnan, ocardona, pallavi.kadam, ranjit.menon,
	olivier.matz, arybchenko, mdr, nhorman

Some EAL functions are used by mempool lib but not exported on Windows.
The functions are exported.
Added mempool to supported libraries for Windows compilation.

Signed-off-by: Fady Bader <fady@mellanox.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
---
 lib/librte_eal/rte_eal_exports.def | 6 ++++++
 lib/meson.build                    | 2 +-
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/lib/librte_eal/rte_eal_exports.def b/lib/librte_eal/rte_eal_exports.def
index 374e654264..984c5d1698 100644
--- a/lib/librte_eal/rte_eal_exports.def
+++ b/lib/librte_eal/rte_eal_exports.def
@@ -1,6 +1,11 @@
 EXPORTS
 	__rte_panic
+	__rte_trace_mem_per_thread_alloc
+	__rte_trace_point_emit_field
+	__rte_trace_point_register
 	per_lcore__rte_errno
+	per_lcore_trace_mem
+	per_lcore_trace_point_sz
 	rte_calloc
 	rte_calloc_socket
 	rte_bus_register
@@ -58,6 +63,7 @@ EXPORTS
 	rte_vfio_container_dma_unmap
 	rte_vlog
 	rte_realloc
+	rte_strscpy
 	rte_zmalloc
 	rte_zmalloc_socket
 
diff --git a/lib/meson.build b/lib/meson.build
index dadf151f78..12d5f81e9b 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -40,7 +40,7 @@ if is_windows
 		'kvargs',
 		'eal',
 		'ring',
-		'pci',
+		'mempool', 'pci',
 	] # only supported libraries for windows
 endif
 
-- 
2.16.1.windows.4


^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [dpdk-dev] [PATCH v7 1/3] eal: disable function versioning on Windows
  2020-07-06 11:32         ` [dpdk-dev] [PATCH v7 1/3] eal: disable function versioning " Fady Bader
@ 2020-07-06 12:22           ` Bruce Richardson
  2020-07-06 23:16             ` Thomas Monjalon
  0 siblings, 1 reply; 34+ messages in thread
From: Bruce Richardson @ 2020-07-06 12:22 UTC (permalink / raw)
  To: Fady Bader
  Cc: dev, thomas, tbashar, talshn, yohadt, dmitry.kozliuk,
	harini.ramakrishnan, ocardona, pallavi.kadam, ranjit.menon,
	olivier.matz, arybchenko, mdr, nhorman

On Mon, Jul 06, 2020 at 02:32:39PM +0300, Fady Bader wrote:
> Function versioning implementation is not supported by Windows.
> Function versioning is disabled on Windows.
> 
> Signed-off-by: Fady Bader <fady@mellanox.com>
> ---
>  doc/guides/windows_gsg/intro.rst | 4 ++++
>  lib/meson.build                  | 6 +++++-
>  2 files changed, 9 insertions(+), 1 deletion(-)
> 
> diff --git a/doc/guides/windows_gsg/intro.rst b/doc/guides/windows_gsg/intro.rst
> index a0285732df..58c6246404 100644
> --- a/doc/guides/windows_gsg/intro.rst
> +++ b/doc/guides/windows_gsg/intro.rst
> @@ -18,3 +18,7 @@ DPDK for Windows is currently a work in progress. Not all DPDK source files
>  compile. Support is being added in pieces so as to limit the overall scope
>  of any individual patch series. The goal is to be able to run any DPDK
>  application natively on Windows.
> +
> +The :doc:`../contributing/abi_policy` cannot be respected for Windows.
> +Minor ABI versions may be incompatible
> +because function versioning is not supported on Windows.
> diff --git a/lib/meson.build b/lib/meson.build
> index c1b9e1633f..dadf151f78 100644
> --- a/lib/meson.build
> +++ b/lib/meson.build
> @@ -107,6 +107,10 @@ foreach l:libraries
>  			shared_dep = declare_dependency(include_directories: includes)
>  			static_dep = shared_dep
>  		else
> +			if is_windows and use_function_versioning
> +				message('@0@: Function versioning is not supported by Windows.'
> +				.format(name))
> +			endif
>  

This is ok here, but I think it might be better just moved to somewhere
like config/meson.build, so that it is always just printed once for each
build. I don't see an issue with having it printed even if there is no
function versioning in the build itself.

>  			if use_function_versioning
>  				cflags += '-DRTE_USE_FUNCTION_VERSIONING'
> @@ -138,7 +142,7 @@ foreach l:libraries
>  					include_directories: includes,
>  					dependencies: static_deps)
>  
> -			if not use_function_versioning
> +			if not use_function_versioning or is_windows
>  				# use pre-build objects to build shared lib
>  				sources = []
>  				objs += static_lib.extract_all_objects(recursive: false)
> -- 
> 2.16.1.windows.4
> 

With or without the code move above, which is just a suggestion,

Acked-by: Bruce Richardson <bruce.richardson@intel.com>

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [dpdk-dev] [PATCH v7 1/3] eal: disable function versioning on Windows
  2020-07-06 12:22           ` Bruce Richardson
@ 2020-07-06 23:16             ` Thomas Monjalon
  0 siblings, 0 replies; 34+ messages in thread
From: Thomas Monjalon @ 2020-07-06 23:16 UTC (permalink / raw)
  To: Bruce Richardson
  Cc: Fady Bader, dev, tbashar, talshn, yohadt, dmitry.kozliuk,
	harini.ramakrishnan, ocardona, pallavi.kadam, ranjit.menon,
	olivier.matz, arybchenko, mdr, nhorman

06/07/2020 14:22, Bruce Richardson:
> On Mon, Jul 06, 2020 at 02:32:39PM +0300, Fady Bader wrote:
> > Function versioning implementation is not supported by Windows.
> > Function versioning is disabled on Windows.
> > 
> > Signed-off-by: Fady Bader <fady@mellanox.com>
> > ---
> >  doc/guides/windows_gsg/intro.rst | 4 ++++
> >  lib/meson.build                  | 6 +++++-
> >  2 files changed, 9 insertions(+), 1 deletion(-)
> > 
> > diff --git a/doc/guides/windows_gsg/intro.rst b/doc/guides/windows_gsg/intro.rst
> > index a0285732df..58c6246404 100644
> > --- a/doc/guides/windows_gsg/intro.rst
> > +++ b/doc/guides/windows_gsg/intro.rst
> > @@ -18,3 +18,7 @@ DPDK for Windows is currently a work in progress. Not all DPDK source files
> >  compile. Support is being added in pieces so as to limit the overall scope
> >  of any individual patch series. The goal is to be able to run any DPDK
> >  application natively on Windows.
> > +
> > +The :doc:`../contributing/abi_policy` cannot be respected for Windows.
> > +Minor ABI versions may be incompatible
> > +because function versioning is not supported on Windows.
> > diff --git a/lib/meson.build b/lib/meson.build
> > index c1b9e1633f..dadf151f78 100644
> > --- a/lib/meson.build
> > +++ b/lib/meson.build
> > @@ -107,6 +107,10 @@ foreach l:libraries
> >  			shared_dep = declare_dependency(include_directories: includes)
> >  			static_dep = shared_dep
> >  		else
> > +			if is_windows and use_function_versioning
> > +				message('@0@: Function versioning is not supported by Windows.'
> > +				.format(name))
> > +			endif
> >  
> 
> This is ok here, but I think it might be better just moved to somewhere
> like config/meson.build, so that it is always just printed once for each
> build. I don't see an issue with having it printed even if there is no
> function versioning in the build itself.

Moving such message in config/meson.build is the same
as moving it to the doc.
I prefer having a message each time a library compatibility
is required but not possible.

> With or without the code move above, which is just a suggestion,
> 
> Acked-by: Bruce Richardson <bruce.richardson@intel.com>

OK thanks, I'll merge as is.



^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [dpdk-dev] [PATCH v7 0/3] build mempool on Windows
  2020-07-06 11:32       ` [dpdk-dev] [PATCH v7 0/3] build mempool " Fady Bader
                           ` (2 preceding siblings ...)
  2020-07-06 11:32         ` [dpdk-dev] [PATCH v7 3/3] mempool: mempool build on Windows Fady Bader
@ 2020-07-06 23:29         ` Thomas Monjalon
  3 siblings, 0 replies; 34+ messages in thread
From: Thomas Monjalon @ 2020-07-06 23:29 UTC (permalink / raw)
  To: Fady Bader
  Cc: dev, tbashar, talshn, yohadt, dmitry.kozliuk,
	harini.ramakrishnan, ocardona, pallavi.kadam, ranjit.menon,
	olivier.matz, arybchenko, mdr, nhorman

> Fady Bader (3):
>   eal: disable function versioning on Windows
>   mempool: use generic memory management
>   mempool: mempool build on Windows

Applied, thanks




^ permalink raw reply	[flat|nested] 34+ messages in thread

end of thread, other threads:[~2020-07-06 23:29 UTC | newest]

Thread overview: 34+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-02 13:14 [dpdk-dev] [PATCH v4 0/3] build mempool on Windows Fady Bader
2020-07-02 13:14 ` [dpdk-dev] [PATCH v4 1/3] eal: disable function versioning " Fady Bader
2020-07-05 11:46   ` [dpdk-dev] [PATCH v5 0/3] build mempool " Fady Bader
2020-07-05 11:46     ` [dpdk-dev] [PATCH v5 1/3] eal: disable function versioning " Fady Bader
2020-07-06  8:19       ` Bruce Richardson
2020-07-06 10:39         ` Fady Bader
2020-07-05 11:46     ` [dpdk-dev] [PATCH v5 2/3] mempool: use generic memory management Fady Bader
2020-07-05 11:50       ` Andrew Rybchenko
2020-07-05 12:08       ` Dmitry Kozlyuk
2020-07-05 12:25         ` Fady Bader
2020-07-05 11:46     ` [dpdk-dev] [PATCH v5 3/3] mempool: mempool build on Windows Fady Bader
2020-07-05 12:01       ` David Marchand
2020-07-05 12:24         ` Fady Bader
2020-07-05 13:47     ` [dpdk-dev] [PATCH v6 0/3] build mempool " Fady Bader
2020-07-05 13:47       ` [dpdk-dev] [PATCH v6 1/3] eal: disable function versioning " Fady Bader
2020-07-05 14:36         ` Tal Shnaiderman
2020-07-05 20:23         ` Thomas Monjalon
2020-07-06  7:02           ` Fady Bader
2020-07-05 13:47       ` [dpdk-dev] [PATCH v6 2/3] mempool: use generic memory management Fady Bader
2020-07-05 15:26         ` Dmitry Kozlyuk
2020-07-05 20:08         ` Thomas Monjalon
2020-07-05 13:47       ` [dpdk-dev] [PATCH v6 3/3] mempool: mempool build on Windows Fady Bader
2020-07-05 20:25         ` Thomas Monjalon
2020-07-06 11:32       ` [dpdk-dev] [PATCH v7 0/3] build mempool " Fady Bader
2020-07-06 11:32         ` [dpdk-dev] [PATCH v7 1/3] eal: disable function versioning " Fady Bader
2020-07-06 12:22           ` Bruce Richardson
2020-07-06 23:16             ` Thomas Monjalon
2020-07-06 11:32         ` [dpdk-dev] [PATCH v7 2/3] mempool: use generic memory management Fady Bader
2020-07-06 11:32         ` [dpdk-dev] [PATCH v7 3/3] mempool: mempool build on Windows Fady Bader
2020-07-06 23:29         ` [dpdk-dev] [PATCH v7 0/3] build mempool " Thomas Monjalon
2020-07-02 13:14 ` [dpdk-dev] [PATCH v4 2/3] mempool: use generic memory management Fady Bader
2020-07-03 13:16   ` Olivier Matz
2020-07-02 13:14 ` [dpdk-dev] [PATCH v4 3/3] mempool: mempool build on Windows Fady Bader
2020-07-03 13:17   ` Olivier Matz

DPDK patches and discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://inbox.dpdk.org/dev/0 dev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 dev dev/ http://inbox.dpdk.org/dev \
		dev@dpdk.org
	public-inbox-index dev

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://inbox.dpdk.org/inbox.dpdk.dev


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git