diff options
author | Alastair Poole <mail@alastairpoole.com> | 2021-12-04 06:36:36 +0000 |
---|---|---|
committer | Alastair Poole <mail@alastairpoole.com> | 2021-12-04 06:36:36 +0000 |
commit | 981e85f99cdb1c1945d57256f8d1448168610573 (patch) | |
tree | 2ddf2eb2f088fe2b6ba536146811115dc07222dd | |
parent | d5c8311470e398421d960bd6109051f5f59d2ea3 (diff) | |
download | efl-981e85f99cdb1c1945d57256f8d1448168610573.tar.gz |
ecore_thread: Add ecore_thread_name_set API.
This function can only be successfully called from the given
thread. For debugging purposes, it's useful to be able to give
a name to an Ecore_Thread.
ecore_thread_name_set(Ecore_Thread *thread, const char *name);
@feature
-rw-r--r-- | src/lib/ecore/Ecore_Common.h | 14 | ||||
-rw-r--r-- | src/lib/ecore/ecore_thread.c | 13 |
2 files changed, 27 insertions, 0 deletions
diff --git a/src/lib/ecore/Ecore_Common.h b/src/lib/ecore/Ecore_Common.h index 899debc267..af4950c6cd 100644 --- a/src/lib/ecore/Ecore_Common.h +++ b/src/lib/ecore/Ecore_Common.h @@ -2081,6 +2081,20 @@ EAPI void ecore_thread_max_reset(void); EAPI int ecore_thread_available_get(void); /** + * Sets the name of a given thread for debugging purposes. + * + * This function will only succeed if called from the named thread. + * + * @param thread The thread context to set the name of + * @param name The string to name the thread - this cannot be NULL + * + * @return EINA_TRUE if it succeeds setting the name or EINA_FALSE otherwise. + * + * @since 1.26 + */ +EAPI Eina_Bool ecore_thread_name_set(Ecore_Thread *thread, const char *name); + +/** * Adds some data to a hash local to the thread. * * @param thread The thread context the data belongs to diff --git a/src/lib/ecore/ecore_thread.c b/src/lib/ecore/ecore_thread.c index f38c7880c1..c112b77676 100644 --- a/src/lib/ecore/ecore_thread.c +++ b/src/lib/ecore/ecore_thread.c @@ -1238,6 +1238,19 @@ ecore_thread_available_get(void) } EAPI Eina_Bool +ecore_thread_name_set(Ecore_Thread *thread, const char *name) +{ + Ecore_Pthread_Worker *work = (Ecore_Pthread_Worker *) thread; + + if ((!work) || (!work->self) || (!name)) + return EINA_FALSE; + + if (eina_thread_self() != work->self) return EINA_FALSE; + + return eina_thread_name_set(work->self, name); +} + +EAPI Eina_Bool ecore_thread_local_data_add(Ecore_Thread *thread, const char *key, void *value, |