extern "C" {
#endif
-#define LCORE_ID_ANY -1 /**< Any lcore. */
+#define LCORE_ID_ANY UINT32_MAX /**< Any lcore. */
#if defined(__linux__)
typedef cpu_set_t rte_cpuset_t;
unsigned core_id; /**< core number on socket for this lcore */
int core_index; /**< relative index, starting from 0 */
rte_cpuset_t cpuset; /**< cpu set which the lcore affinity to */
+ uint8_t core_role; /**< role of core eg: OFF, RTE, SERVICE */
};
/**
extern struct lcore_config lcore_config[RTE_MAX_LCORE];
RTE_DECLARE_PER_LCORE(unsigned, _lcore_id); /**< Per thread "lcore id". */
-RTE_DECLARE_PER_LCORE(unsigned, _socket_id); /**< Per thread "socket id". */
RTE_DECLARE_PER_LCORE(rte_cpuset_t, _cpuset); /**< Per thread "cpuset". */
/**
* Return the ID of the execution unit we are running on.
* @return
- * Logical core ID
+ * Logical core ID (in EAL thread) or LCORE_ID_ANY (in non-EAL thread)
*/
static inline unsigned
rte_lcore_id(void)
* @return
* the ID of current lcoreid's physical socket
*/
-static inline unsigned
-rte_socket_id(void)
-{
- return RTE_PER_LCORE(_socket_id);
-}
+unsigned rte_socket_id(void);
/**
* Get the ID of the physical socket of the specified lcore
struct rte_config *cfg = rte_eal_get_configuration();
if (lcore_id >= RTE_MAX_LCORE)
return 0;
- return (cfg->lcore_role[lcore_id] != ROLE_OFF);
+ return cfg->lcore_role[lcore_id] == ROLE_RTE;
}
/**
*/
void rte_thread_get_affinity(rte_cpuset_t *cpusetp);
+/**
+ * Set thread names.
+ *
+ * @note It fails with glibc < 2.12.
+ *
+ * @param id
+ * Thread id.
+ * @param name
+ * Thread name to set.
+ * @return
+ * On success, return 0; otherwise return a negative value.
+ */
+int rte_thread_setname(pthread_t id, const char *name);
+
+/**
+ * Test if the core supplied has a specific role
+ *
+ * @param lcore_id
+ * The identifier of the lcore, which MUST be between 0 and
+ * RTE_MAX_LCORE-1.
+ * @param role
+ * The role to be checked against.
+ * @return
+ * On success, return 0; otherwise return a negative value.
+ */
+int
+rte_lcore_has_role(unsigned int lcore_id, enum rte_lcore_role_t role);
#ifdef __cplusplus
}