<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Exchange Server">
<!-- converted from rtf -->
<style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left: #800000 2px solid; } --></style>
</head>
<body>
<font face="Calibri" size="2"><span style="font-size:10pt;">
<div style="padding-right:5pt;padding-left:5pt;"><font color="green">[Public]<br>

</font></div>
<div style="margin-top:5pt;"><font face="Times New Roman" size="3"><span style="font-size:12pt;"><br>

</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">Snipped</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;"> </span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> </span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> </span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> To to be clear; it's something like this I think of when I say "DOM-style" API.</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> </span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> #ifndef RTE_HWTOPO_H</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> #define RTE_HWTOPO_H</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> </span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> struct rte_hwtopo_node;</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> </span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> enum rte_hwtopo_node_type {</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">>      RTE_HWTOPO_NODE_TYPE_CPU_CORE,</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">>      RTE_HWTOPO_NODE_TYPE_CACHE,</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">>      RTE_HWTOPO_NODE_TYPE_NUMA</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> };</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> </span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> int</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> rte_hwtopo_init(void);</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> </span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> struct rte_hwtopo_node *</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> rte_hwtopo_get_core_by_lcore(unsigned int lcore);</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> </span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> struct rte_hwtopo_node *</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> rte_hwtopo_get_core_by_id(unsigned int os_cpu_id);</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> </span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> struct rte_hwtopo_node *</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> rte_hwtopo_parent(struct rte_hwtopo_node *node);</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> </span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> struct rte_hwtopo_node *</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> rte_hwtopo_first_child(struct rte_hwtopo_node *node);</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> </span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> struct rte_hwtopo_node *</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> rte_hwtopo_next_child(struct rte_hwtopo_node *node,</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">>                       struct rte_hwtopo_node *child);</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> </span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> struct rte_hwtopo_node *</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> rte_hwtopo_first_sibling(struct rte_hwtopo_node *node);</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> </span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> struct rte_hwtopo_node *</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> rte_hwtopo_next_sibling(struct rte_hwtopo_node *node,</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">>                         struct rte_hwtopo_node *child);</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> </span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> enum rte_hwtopo_node_type</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> rte_hwtopo_get_type(struct rte_hwtopo_node *node);</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> </span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> #define RTE_HWTOPO_NODE_ATTR_CORE_FREQUENCY_NOMINAL 0 #define</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> RTE_HWTOPO_NODE_ATTR_CACHE_LEVEL 1 #define</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> RTE_HWTOPO_NODE_ATTR_CACHE_SIZE 2</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> </span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> int</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> rte_hwtopo_get_attr_int64(struct rte_hwtopo_node *node, unsigned int</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> attr_name,</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">>                           int64_t *attr_value);</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> </span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> int</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> rte_hwtopo_get_attr_str(struct rte_hwtopo_node *node, unsigned int</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> attr_name,</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">>                         char *attr_value, size_t capacity);</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> </span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> #endif</span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> </span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">> Surely, this too would be awkward (or should I say cumbersome) to use in certain scenarios. </span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">This appears to be more like hwloc api calls, as shared in my earlier email my intention with the API suggestion is not introduce new library. </span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">I have certain reservations and with my current understanding I am not able to map certain DPDK core mapping. Let discuss this in technical call. </span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;"> </span></font></div>
<div><font face="Calibri" size="2"><span style="font-size:11pt;">Snipped</span></font></div>
</span></font>
</body>
</html>