Signed-off-by: Alex Wang <al...@nicira.com> --- lib/ovs-numa.c | 18 ++++++++++++++++++ lib/ovs-numa.h | 7 +++++++ 2 files changed, 25 insertions(+)
diff --git a/lib/ovs-numa.c b/lib/ovs-numa.c index 545b075..2de2aa2 100644 --- a/lib/ovs-numa.c +++ b/lib/ovs-numa.c @@ -168,6 +168,24 @@ ovs_numa_get_n_cores(void) : OVS_CORE_UNSPEC; } +/* Given 'core_id', returns the corresponding socket id. Returns + * OVS_SOCKET_UNSPEC if 'core_id' is invalid. */ +int +ovs_numa_get_socket_id(int core_id) +{ + if (ovs_numa_cpu_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->socket->socket_id; + } + + return OVS_SOCKET_UNSPEC; +} + /* Returns the number of cpu cores on socket. Returns OVS_CORE_UNSPEC * if 'socket_id' is invalid. */ int diff --git a/lib/ovs-numa.h b/lib/ovs-numa.h index 95884c5..46d5750 100644 --- a/lib/ovs-numa.h +++ b/lib/ovs-numa.h @@ -32,6 +32,7 @@ bool ovs_numa_cpu_socket_id_is_valid(int sid); bool ovs_numa_cpu_core_id_is_valid(int cid); int ovs_numa_get_n_sockets(void); int ovs_numa_get_n_cores(void); +int ovs_numa_get_socket_id(int core_id); int ovs_numa_get_n_cores_on_socket(int socket_id); int ovs_numa_get_n_unpinned_cores_on_socket(int socket_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_socket_id(int core_id OVS_UNUSED) +{ + return OVS_SOCKET_UNSPEC; +} + +static inline int ovs_numa_get_n_cores_on_socket(int socket_id OVS_UNUSED) { return OVS_CORE_UNSPEC; -- 1.7.9.5 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev