[v5,2/4] eal: remove thread getname API
Checks
Commit Message
Remove the rte_thread_getname API. The API is __rte_experimental and
requires no deprecation notice.
Fold the platform specific variants into the one place it is used as a
special case to retain the functionality for linux only.
Adjust the function as follows.
* limit use of this very platform glibc specific function to the single
place it is used.
* change the return type to void since the single use cannot
meaningfully check for failure given the platform defined behavior.
* change the thread id type to be rte_thread_t.
* rename the function rte_thread_get_name to be consistent with the
exported rte_thread_set_name.
Signed-off-by: Tyler Retzlaff <roretzla@linux.microsoft.com>
---
lib/eal/common/eal_common_trace.c | 15 ++++++++++++++-
lib/eal/freebsd/eal_thread.c | 9 ---------
lib/eal/include/rte_lcore.h | 17 -----------------
lib/eal/linux/eal_thread.c | 15 ---------------
lib/eal/version.map | 1 -
5 files changed, 14 insertions(+), 43 deletions(-)
Comments
On Tue, Jan 17, 2023 at 11:51 PM Tyler Retzlaff
<roretzla@linux.microsoft.com> wrote:
>
> Remove the rte_thread_getname API. The API is __rte_experimental and
> requires no deprecation notice.
>
> Fold the platform specific variants into the one place it is used as a
> special case to retain the functionality for linux only.
>
> Adjust the function as follows.
> * limit use of this very platform glibc specific function to the single
> place it is used.
> * change the return type to void since the single use cannot
> meaningfully check for failure given the platform defined behavior.
> * change the thread id type to be rte_thread_t.
> * rename the function rte_thread_get_name to be consistent with the
> exported rte_thread_set_name.
>
> Signed-off-by: Tyler Retzlaff <roretzla@linux.microsoft.com>
Trace changes are looks good to me.
For trace, Acked-by: Jerin Jacob <jerinj@marvell.com>
> ---
> lib/eal/common/eal_common_trace.c | 15 ++++++++++++++-
> lib/eal/freebsd/eal_thread.c | 9 ---------
> lib/eal/include/rte_lcore.h | 17 -----------------
> lib/eal/linux/eal_thread.c | 15 ---------------
> lib/eal/version.map | 1 -
> 5 files changed, 14 insertions(+), 43 deletions(-)
>
> diff --git a/lib/eal/common/eal_common_trace.c b/lib/eal/common/eal_common_trace.c
> index 5caaac8..75162b7 100644
> --- a/lib/eal/common/eal_common_trace.c
> +++ b/lib/eal/common/eal_common_trace.c
> @@ -298,6 +298,19 @@ rte_trace_mode rte_trace_mode_get(void)
> trace_point_dump(f, tp);
> }
>
> +static void
> +thread_get_name(rte_thread_t id, char *name, size_t len)
> +{
> +#if defined(RTE_EXEC_ENV_LINUX) && defined(__GLIBC__) && defined(__GLIBC_PREREQ)
> +#if __GLIBC_PREREQ(2, 12)
> + pthread_getname_np((pthread_t)id.opaque_id, name, len);
> +#endif
> +#endif
> + RTE_SET_USED(id);
> + RTE_SET_USED(name);
> + RTE_SET_USED(len);
> +}
> +
> void
> __rte_trace_mem_per_thread_alloc(void)
> {
> @@ -356,7 +369,7 @@ rte_trace_mode rte_trace_mode_get(void)
> /* Store the thread name */
> char *name = header->stream_header.thread_name;
> memset(name, 0, __RTE_TRACE_EMIT_STRING_LEN_MAX);
> - rte_thread_getname(pthread_self(), name,
> + thread_get_name(rte_thread_self(), name,
> __RTE_TRACE_EMIT_STRING_LEN_MAX);
>
> trace->lcore_meta[count].mem = header;
> diff --git a/lib/eal/freebsd/eal_thread.c b/lib/eal/freebsd/eal_thread.c
> index b69f5d3..3227d9b 100644
> --- a/lib/eal/freebsd/eal_thread.c
> +++ b/lib/eal/freebsd/eal_thread.c
> @@ -49,12 +49,3 @@ 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;
> -}
> diff --git a/lib/eal/include/rte_lcore.h b/lib/eal/include/rte_lcore.h
> index 6938c3f..9c78650 100644
> --- a/lib/eal/include/rte_lcore.h
> +++ b/lib/eal/include/rte_lcore.h
> @@ -352,23 +352,6 @@ enum rte_lcore_role_t {
> 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);
> -
> -/**
> * Register current non-EAL thread as a lcore.
> *
> * @note This API is not compatible with the multi-process feature:
> diff --git a/lib/eal/linux/eal_thread.c b/lib/eal/linux/eal_thread.c
> index d5fddab..c07ad9d 100644
> --- a/lib/eal/linux/eal_thread.c
> +++ b/lib/eal/linux/eal_thread.c
> @@ -55,18 +55,3 @@ 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;
> -
> -}
> diff --git a/lib/eal/version.map b/lib/eal/version.map
> index c98ba71..6523102 100644
> --- a/lib/eal/version.map
> +++ b/lib/eal/version.map
> @@ -369,7 +369,6 @@ EXPERIMENTAL {
> __rte_trace_point_register;
> per_lcore_trace_mem;
> per_lcore_trace_point_sz;
> - rte_thread_getname; # WINDOWS_NO_EXPORT
> rte_trace_dump; # WINDOWS_NO_EXPORT
> rte_trace_is_enabled; # WINDOWS_NO_EXPORT
> rte_trace_metadata_dump; # WINDOWS_NO_EXPORT
> --
> 1.8.3.1
>
On Tue, Jan 17, 2023 at 7:22 PM Tyler Retzlaff
<roretzla@linux.microsoft.com> wrote:
>
> Remove the rte_thread_getname API. The API is __rte_experimental and
> requires no deprecation notice.
>
> Fold the platform specific variants into the one place it is used as a
> special case to retain the functionality for linux only.
>
> Adjust the function as follows.
> * limit use of this very platform glibc specific function to the single
> place it is used.
> * change the return type to void since the single use cannot
> meaningfully check for failure given the platform defined behavior.
> * change the thread id type to be rte_thread_t.
> * rename the function rte_thread_get_name to be consistent with the
> exported rte_thread_set_name.
This comment is not relevant anymore.
>
> Signed-off-by: Tyler Retzlaff <roretzla@linux.microsoft.com>
@@ -298,6 +298,19 @@ rte_trace_mode rte_trace_mode_get(void)
trace_point_dump(f, tp);
}
+static void
+thread_get_name(rte_thread_t id, char *name, size_t len)
+{
+#if defined(RTE_EXEC_ENV_LINUX) && defined(__GLIBC__) && defined(__GLIBC_PREREQ)
+#if __GLIBC_PREREQ(2, 12)
+ pthread_getname_np((pthread_t)id.opaque_id, name, len);
+#endif
+#endif
+ RTE_SET_USED(id);
+ RTE_SET_USED(name);
+ RTE_SET_USED(len);
+}
+
void
__rte_trace_mem_per_thread_alloc(void)
{
@@ -356,7 +369,7 @@ rte_trace_mode rte_trace_mode_get(void)
/* Store the thread name */
char *name = header->stream_header.thread_name;
memset(name, 0, __RTE_TRACE_EMIT_STRING_LEN_MAX);
- rte_thread_getname(pthread_self(), name,
+ thread_get_name(rte_thread_self(), name,
__RTE_TRACE_EMIT_STRING_LEN_MAX);
trace->lcore_meta[count].mem = header;
@@ -49,12 +49,3 @@ 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;
-}
@@ -352,23 +352,6 @@ enum rte_lcore_role_t {
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);
-
-/**
* Register current non-EAL thread as a lcore.
*
* @note This API is not compatible with the multi-process feature:
@@ -55,18 +55,3 @@ 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;
-
-}
@@ -369,7 +369,6 @@ EXPERIMENTAL {
__rte_trace_point_register;
per_lcore_trace_mem;
per_lcore_trace_point_sz;
- rte_thread_getname; # WINDOWS_NO_EXPORT
rte_trace_dump; # WINDOWS_NO_EXPORT
rte_trace_is_enabled; # WINDOWS_NO_EXPORT
rte_trace_metadata_dump; # WINDOWS_NO_EXPORT