eal: add function to check lcore role
[dpdk.git] / lib / librte_eal / common / include / rte_lcore.h
index 20a58eb..c89e6ba 100644 (file)
@@ -73,6 +73,7 @@ struct lcore_config {
        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 */
 };
 
 /**
@@ -81,7 +82,6 @@ struct lcore_config {
 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". */
 
 /**
@@ -145,11 +145,7 @@ rte_lcore_index(int lcore_id)
  * @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
@@ -180,7 +176,7 @@ rte_lcore_is_enabled(unsigned lcore_id)
        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;
 }
 
 /**
@@ -252,6 +248,33 @@ int rte_thread_set_affinity(rte_cpuset_t *cpusetp);
  */
 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
 }