ovs-numa: Add function for getting numa node id from core id.
authorAlex Wang <alexw@nicira.com>
Fri, 5 Sep 2014 06:17:33 +0000 (06:17 +0000)
committerAlex Wang <alexw@nicira.com>
Fri, 5 Sep 2014 22:19:53 +0000 (15:19 -0700)
Signed-off-by: Alex Wang <alexw@nicira.com>
Acked-by: Pravin B Shelar <pshelar@nicira.com>
lib/ovs-numa.c
lib/ovs-numa.h

index bcdea3b..4698967 100644 (file)
@@ -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
index d4a57a5..83732fc 100644 (file)
@@ -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);
@@ -71,6 +72,12 @@ ovs_numa_get_n_cores(void)
     return OVS_CORE_UNSPEC;
 }
 
+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)
 {