DPDK patches and discussions
 help / color / mirror / Atom feed
From: Pablo de Lara <pablo.de.lara.guarch@intel.com>
To: thomas@monjalon.net, declan.doherty@intel.com
Cc: dev@dpdk.org, Pablo de Lara <pablo.de.lara.guarch@intel.com>
Subject: [dpdk-dev] [PATCH 1/5] eal: check if socket has memory reserved
Date: Wed, 21 Jun 2017 00:25:51 +0100	[thread overview]
Message-ID: <20170620232555.82244-2-pablo.de.lara.guarch@intel.com> (raw)
In-Reply-To: <20170620232555.82244-1-pablo.de.lara.guarch@intel.com>

Several drivers and apps check if a socket has reserved memory,
by implementing their own function, which returns the
total number of sockets that have memory.
This function is not really useful, as the main goal is
to check if memory on a specific socket is available,
rather than checking if a socket id is beyond the total
number of sockets (there could be a socket in the middle
with no memory).

Therefore, it looks more useful to have a function in EAL
that can be used in these files.

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
---
 lib/librte_eal/bsdapp/eal/rte_eal_version.map   |  7 +++++++
 lib/librte_eal/common/eal_common_memory.c       | 17 +++++++++++++++++
 lib/librte_eal/common/include/rte_memory.h      |  9 +++++++++
 lib/librte_eal/linuxapp/eal/rte_eal_version.map |  7 +++++++
 4 files changed, 40 insertions(+)

diff --git a/lib/librte_eal/bsdapp/eal/rte_eal_version.map b/lib/librte_eal/bsdapp/eal/rte_eal_version.map
index 2e48a73..85813e3 100644
--- a/lib/librte_eal/bsdapp/eal/rte_eal_version.map
+++ b/lib/librte_eal/bsdapp/eal/rte_eal_version.map
@@ -193,3 +193,10 @@ DPDK_17.05 {
 	vfio_get_group_no;
 
 } DPDK_17.02;
+
+DPDK_17.08 {
+	global:
+
+	rte_eal_has_memory_socket;
+
+} DPDK_17.05;
diff --git a/lib/librte_eal/common/eal_common_memory.c b/lib/librte_eal/common/eal_common_memory.c
index 6155752..9811d06 100644
--- a/lib/librte_eal/common/eal_common_memory.c
+++ b/lib/librte_eal/common/eal_common_memory.c
@@ -120,6 +120,23 @@ unsigned rte_memory_get_nrank(void)
 	return rte_eal_get_configuration()->mem_config->nrank;
 }
 
+/**
+ * Return if socket has memory reserved.
+ */
+unsigned int
+rte_eal_has_memory_socket(uint8_t socket_id)
+{
+	unsigned int i;
+	const struct rte_memseg *ms = rte_eal_get_physmem_layout();
+
+	for (i = 0; ((i < RTE_MAX_MEMSEG) && (ms[i].addr != NULL)); i++) {
+		if (ms[i].socket_id == (int) socket_id)
+			return 1;
+	}
+
+	return 0;
+}
+
 static int
 rte_eal_memdevice_init(void)
 {
diff --git a/lib/librte_eal/common/include/rte_memory.h b/lib/librte_eal/common/include/rte_memory.h
index 4aa5d1f..e5fa902 100644
--- a/lib/librte_eal/common/include/rte_memory.h
+++ b/lib/librte_eal/common/include/rte_memory.h
@@ -195,6 +195,15 @@ unsigned rte_memory_get_nchannel(void);
  */
 unsigned rte_memory_get_nrank(void);
 
+/**
+ * Return if socket has memory reserved.
+ *
+ * @return
+ *   - 0 if socket has no memory reserved.
+ *   - 1 if socket has memory reserved..
+ */
+unsigned int rte_eal_has_memory_socket(uint8_t socket_id);
+
 #ifdef RTE_LIBRTE_XEN_DOM0
 
 /**< Internal use only - should DOM0 memory mapping be used */
diff --git a/lib/librte_eal/linuxapp/eal/rte_eal_version.map b/lib/librte_eal/linuxapp/eal/rte_eal_version.map
index 670bab3..0b3ba7f 100644
--- a/lib/librte_eal/linuxapp/eal/rte_eal_version.map
+++ b/lib/librte_eal/linuxapp/eal/rte_eal_version.map
@@ -198,3 +198,10 @@ DPDK_17.05 {
 	vfio_get_group_no;
 
 } DPDK_17.02;
+
+DPDK_17.08 {
+	global:
+
+	rte_eal_has_memory_socket;
+
+} DPDK_17.05;
-- 
2.9.4

  reply	other threads:[~2017-06-21  7:26 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-06-20 23:25 [dpdk-dev] [PATCH 0/5] eal: check socket memory Pablo de Lara
2017-06-20 23:25 ` Pablo de Lara [this message]
2017-06-20 23:25 ` [dpdk-dev] [PATCH 2/5] cryptodev: check if socket id has memory Pablo de Lara
2017-06-20 23:25 ` [dpdk-dev] [PATCH 3/5] crypto/scheduler: " Pablo de Lara
2017-06-20 23:25 ` [dpdk-dev] [PATCH 4/5] net/bonding: " Pablo de Lara
2017-06-20 23:25 ` [dpdk-dev] [PATCH 5/5] test/bonding: " Pablo de Lara
2017-06-21  5:07 ` [dpdk-dev] [PATCH v2 0/4] Socket ID check removal Pablo de Lara
2017-06-21  5:07   ` [dpdk-dev] [PATCH v2 1/4] cryptodev: remove socket id check Pablo de Lara
2017-06-22 11:27     ` Declan Doherty
2017-06-21  5:07   ` [dpdk-dev] [PATCH v2 2/4] crypto/scheduler: " Pablo de Lara
2017-06-22 11:38     ` Declan Doherty
2017-06-21  5:07   ` [dpdk-dev] [PATCH v2 3/4] net/bonding: " Pablo de Lara
2017-06-22 11:47     ` Declan Doherty
2017-06-21  5:07   ` [dpdk-dev] [PATCH v2 4/4] test/bonding: " Pablo de Lara
2017-06-22 11:48     ` Declan Doherty
2017-06-22 15:47   ` [dpdk-dev] [PATCH v2 0/4] Socket ID check removal Thomas Monjalon
2017-06-21 11:33 ` [dpdk-dev] [PATCH 0/5] eal: check socket memory De Lara Guarch, Pablo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170620232555.82244-2-pablo.de.lara.guarch@intel.com \
    --to=pablo.de.lara.guarch@intel.com \
    --cc=declan.doherty@intel.com \
    --cc=dev@dpdk.org \
    --cc=thomas@monjalon.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).