On Mon, 27 Nov 2023 10:25:02 +0100 David Vodak <vo...@cesnet.cz> wrote:
> Function rte_ctrl_thread_create has been replaced by > rte_thread_create_control, > encouraging Linux users to switch from the pthread_t API to the rte_thread > API. > However the rte_thread API does not provide wrappers for all pthread > functions. > This commit introduces equivalent functions for pthread_timedjoin_np, > pthread_getname_np and pthread_cancel. > > Bugzilla ID: 1330 > --- > lib/eal/include/rte_thread.h | 49 ++++++++++++++++++++++++++++++++++++ > lib/eal/unix/rte_thread.c | 20 +++++++++++++++ > lib/eal/version.map | 3 +++ > 3 files changed, 72 insertions(+) > > diff --git a/lib/eal/include/rte_thread.h b/lib/eal/include/rte_thread.h > index 8da9d4d3fb..49a068eda7 100644 > --- a/lib/eal/include/rte_thread.h > +++ b/lib/eal/include/rte_thread.h > @@ -463,6 +463,55 @@ int rte_thread_value_set(rte_thread_key key, const void > *value); > */ > void *rte_thread_value_get(rte_thread_key key); > > +/** > + * Try to join with a terminated thread. If thread has not yet terminated, > + * then the call blocks until a maximum time, specified in abstime. > + * > + * @param thread_id > + * Id of the thread. > + * > + * @param retval > + * Exit status of the thread. > + * > + * @param abstime > + * Maximum time of call blocking, measured against the CLOCK_REALTIME > clock. > + * > + * @return > + * On success, return 0. > + * On failure, return a positive errno-style error number. > + */ > +int rte_thread_timedjoin_np(rte_thread_t thread_id, void **retval, const > struct timespec *abstime); > + > +/** > + * Get name of the thread. > + * > + * @param thread_id > + * Id of the thread. > + * > + * @param name > + * Name of the thread. > + * > + * @param size > + * The number of bytes available in name. > + * > + * @return > + * On success, return 0. > + * On failure, return a positive errno-style error number. > + */ > +int rte_thread_getname_np(rte_thread_t thread_id, char name[], size_t size); > + > +/** > + * Send a cancelation request to a thread. > + * > + * @param thread_id > + * Id of the thread. > + * > + * @return > + * On success, return 0. > + * On failure, return a positive errno-style error number. > + */ > +int rte_thread_cancel(rte_thread_t thread_id); The point of the thread wrappers was to limit the use to what was supportable on all platforms.