On Tue, Jan 17, 2023 at 7:21 PM Tyler Retzlaff <roret...@linux.microsoft.com> wrote: > > Add a rte_thread_set_name that sets the name of an rte_thread_t thread. > This is a replacement for the rte_thread_setname(pthread_t, ...) which > exposes platform-specific details. > > Signed-off-by: Tyler Retzlaff <roret...@linux.microsoft.com> > --- > > Series-acked-by: Morten Brørup <m...@smartsharesystems.com> > > lib/eal/common/eal_common_thread.c | 9 +++----- > lib/eal/freebsd/eal.c | 4 +++- > lib/eal/freebsd/eal_thread.c | 11 +++++++++ > lib/eal/include/rte_thread.h | 17 ++++++++++++++ > lib/eal/linux/eal.c | 8 +++---- > lib/eal/linux/eal_thread.c | 22 ++++++++++++++++++ > lib/eal/version.map | 3 +++ > lib/eal/windows/rte_thread.c | 46 > ++++++++++++++++++++++++++++++++++++++ > 8 files changed, 108 insertions(+), 12 deletions(-) >
[snip] There is no update in lib/eal/windows/eal.c. Windows worker threads are not renamed like on Linux/FreeBSD. I'd rather fix this in this series now that Windows EAL offers such facility. Either in this current patch, or a followup patch, as you prefer. > diff --git a/lib/eal/windows/rte_thread.c b/lib/eal/windows/rte_thread.c > index 1c1e9d0..c26659d 100644 > --- a/lib/eal/windows/rte_thread.c > +++ b/lib/eal/windows/rte_thread.c > @@ -4,7 +4,9 @@ > */ > > #include <errno.h> > +#include <wchar.h> > > +#include <rte_eal.h> > #include <rte_common.h> > #include <rte_errno.h> > #include <rte_thread.h> > @@ -305,6 +307,50 @@ struct thread_routine_ctx { > return thread_id; > } > > +void > +rte_thread_set_name(rte_thread_t thread_id, const char *thread_name) > +{ > + int ret = 0; > + wchar_t wname[RTE_MAX_THREAD_NAME_LEN]; > + mbstate_t state = {0}; > + size_t rv; > + HANDLE thread_handle; > + > + thread_handle = OpenThread(THREAD_ALL_ACCESS, FALSE, > + thread_id.opaque_id); > + if (thread_handle == NULL) { > + ret = thread_log_last_error("OpenThread()"); > + goto cleanup; > + } > + > + memset(wname, 0, sizeof(wname)); > + rv = mbsrtowcs(wname, &thread_name, RTE_DIM(wname) - 1, &state); > + if (rv == (size_t)-1) { > + ret = EILSEQ; > + goto cleanup; > + } > + > + if (wcslen(wname) < strlen(thread_name)) > + RTE_LOG(DEBUG, EAL, "Truncated thread name\n"); > + > +#ifndef RTE_TOOLCHAIN_GCC > + if (FAILED(SetThreadDescription(thread_handle, wname))) { > + ret = EINVAL; > + goto cleanup; > + } > +#else > + ret = ENOTSUP; > + goto cleanup; > +#endif > + > +cleanup: > + if (thread_handle != NULL) > + CloseHandle(thread_handle); > + > + if (ret != 0) > + RTE_LOG(DEBUG, EAL, "Failed to set thread name\n"); > +} > + > int > rte_thread_get_priority(rte_thread_t thread_id, > enum rte_thread_priority *priority) > -- > 1.8.3.1 > -- David Marchand