eal: introduce API for getting thread name
authorJerin Jacob <jerinj@marvell.com>
Wed, 22 Apr 2020 19:03:18 +0000 (00:33 +0530)
committerDavid Marchand <david.marchand@redhat.com>
Thu, 23 Apr 2020 13:39:03 +0000 (15:39 +0200)
Introduce rte_thread_getname() API to get the thread name
and implement it for Linux and FreeBSD.

FreeBSD does not support getting the thread name.

One of the consumers of this API will be the trace subsystem where
it used as an informative purpose.

Signed-off-by: Jerin Jacob <jerinj@marvell.com>
Acked-by: David Marchand <david.marchand@redhat.com>
lib/librte_eal/freebsd/eal_thread.c
lib/librte_eal/include/rte_lcore.h
lib/librte_eal/linux/eal_thread.c
lib/librte_eal/rte_eal_version.map

index f21eddd..d802c1d 100644 (file)
@@ -175,3 +175,12 @@ int rte_thread_setname(pthread_t id, const char *name)
        pthread_set_name_np(id, name);
        return 0;
 }
+
+int rte_thread_getname(pthread_t id, char *name, size_t len)
+{
+       RTE_SET_USED(id);
+       RTE_SET_USED(name);
+       RTE_SET_USED(len);
+
+       return -ENOTSUP;
+}
index 476b8ef..339046b 100644 (file)
@@ -240,6 +240,23 @@ void rte_thread_get_affinity(rte_cpuset_t *cpusetp);
  */
 int rte_thread_setname(pthread_t id, const char *name);
 
+/**
+ * Get thread name.
+ *
+ * @note It fails with glibc < 2.12.
+ *
+ * @param id
+ *   Thread id.
+ * @param name
+ *   Thread name to set.
+ * @param len
+ *   Thread name buffer length.
+ * @return
+ *   On success, return 0; otherwise return a negative value.
+ */
+__rte_experimental
+int rte_thread_getname(pthread_t id, char *name, size_t len);
+
 /**
  * Create a control thread.
  *
index 2fa5806..61fb2ed 100644 (file)
@@ -186,3 +186,18 @@ int rte_thread_setname(pthread_t id, const char *name)
        RTE_SET_USED(name);
        return -ret;
 }
+
+int rte_thread_getname(pthread_t id, char *name, size_t len)
+{
+       int ret = ENOSYS;
+#if defined(__GLIBC__) && defined(__GLIBC_PREREQ)
+#if __GLIBC_PREREQ(2, 12)
+       ret = pthread_getname_np(id, name, len);
+#endif
+#endif
+       RTE_SET_USED(id);
+       RTE_SET_USED(name);
+       RTE_SET_USED(len);
+       return -ret;
+
+}
index f9ede5b..7109858 100644 (file)
@@ -338,4 +338,5 @@ EXPERIMENTAL {
 
        # added in 20.05
        rte_log_can_log;
+       rte_thread_getname;
 };