summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Wang <alexw@nicira.com>2014-09-05 06:17:33 +0000
committerAlex Wang <alexw@nicira.com>2014-09-05 15:19:53 -0700
commit6b1105fb2007fb72e36ec9da92996bd3b1e18916 (patch)
tree217486d83d919e2c3a5bb940332b812ea18217fc
parent421aa227d0cf225b8a6dbf77c3442f57a46ef52f (diff)
downloadopenvswitch-6b1105fb2007fb72e36ec9da92996bd3b1e18916.tar.gz
ovs-numa: Add function for getting numa node id from core id.
Signed-off-by: Alex Wang <alexw@nicira.com> Acked-by: Pravin B Shelar <pshelar@nicira.com>
-rw-r--r--lib/ovs-numa.c17
-rw-r--r--lib/ovs-numa.h7
2 files changed, 24 insertions, 0 deletions
diff --git a/lib/ovs-numa.c b/lib/ovs-numa.c
index bcdea3b48..46989672c 100644
--- a/lib/ovs-numa.c
+++ b/lib/ovs-numa.c
@@ -168,6 +168,23 @@ ovs_numa_get_n_cores(void)
: OVS_CORE_UNSPEC;
}
+/* Given 'core_id', returns the corresponding numa node id. Returns
+ * OVS_NUMA_UNSPEC if 'core_id' is invalid. */
+int
+ovs_numa_get_numa_id(int core_id)
+{
+ if (ovs_numa_core_id_is_valid(core_id)) {
+ struct cpu_core *core;
+
+ core = CONTAINER_OF(hmap_first_with_hash(&all_cpu_cores,
+ hash_int(core_id, 0)),
+ struct cpu_core, hmap_node);
+
+ return core->numa->numa_id;
+ }
+ return OVS_NUMA_UNSPEC;
+}
+
/* Returns the number of cpu cores on numa node. Returns OVS_CORE_UNSPEC
* if 'numa_id' is invalid. */
int
diff --git a/lib/ovs-numa.h b/lib/ovs-numa.h
index d4a57a592..83732fc68 100644
--- a/lib/ovs-numa.h
+++ b/lib/ovs-numa.h
@@ -32,6 +32,7 @@ bool ovs_numa_numa_id_is_valid(int numa_id);
bool ovs_numa_core_id_is_valid(int core_id);
int ovs_numa_get_n_numas(void);
int ovs_numa_get_n_cores(void);
+int ovs_numa_get_numa_id(int core_id);
int ovs_numa_get_n_cores_on_numa(int numa_id);
int ovs_numa_get_n_unpinned_cores_on_numa(int numa_id);
bool ovs_numa_try_pin_core_specific(int core_id);
@@ -72,6 +73,12 @@ ovs_numa_get_n_cores(void)
}
static inline int
+ovs_numa_get_numa_id(int core_id OVS_UNUSED)
+{
+ return OVS_NUMA_UNSPEC;
+}
+
+static inline int
ovs_numa_get_n_cores_on_numa(int numa_id OVS_UNUSED)
{
return OVS_CORE_UNSPEC;