diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2017-01-11 11:04:35 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2017-01-12 07:44:37 +0100 |
commit | a3730b38ccf668b1801164f33febb8c23428e84b (patch) | |
tree | 8b0f8148b2c97d5e1dddbac447038106004a4f17 /cpukit/libcsupport | |
parent | libdebugger: Fix const qualifier (diff) | |
download | rtems-a3730b38ccf668b1801164f33febb8c23428e84b.tar.bz2 |
Add and use rtems_assoc_thread_states_to_string()
Diffstat (limited to 'cpukit/libcsupport')
-rw-r--r-- | cpukit/libcsupport/Makefile.am | 1 | ||||
-rw-r--r-- | cpukit/libcsupport/include/rtems/assoc.h | 16 | ||||
-rw-r--r-- | cpukit/libcsupport/src/assocthreadstatestostring.c | 58 |
3 files changed, 75 insertions, 0 deletions
diff --git a/cpukit/libcsupport/Makefile.am b/cpukit/libcsupport/Makefile.am index ec5dd02832..7110e9f594 100644 --- a/cpukit/libcsupport/Makefile.am +++ b/cpukit/libcsupport/Makefile.am @@ -39,6 +39,7 @@ ASSOCIATION_C_FILES = src/assoclocalbyname.c \ src/assocptrbyremote.c src/assocremotebylocalbitfield.c \ src/assocremotebylocal.c src/assocremotebyname.c ASSOCIATION_C_FILES += src/assoc32tostring.c +ASSOCIATION_C_FILES += src/assocthreadstatestostring.c BASE_FS_C_FILES = src/base_fs.c src/mount.c src/unmount.c src/libio.c \ src/mount-mgr.c src/mount-mktgt.c src/libio_init.c \ diff --git a/cpukit/libcsupport/include/rtems/assoc.h b/cpukit/libcsupport/include/rtems/assoc.h index 9f65ba60a4..238a02f7c7 100644 --- a/cpukit/libcsupport/include/rtems/assoc.h +++ b/cpukit/libcsupport/include/rtems/assoc.h @@ -181,6 +181,22 @@ size_t rtems_assoc_32_to_string( const char *fallback ); +/** + * @brief Converts the specified thread states into a text representation. + * + * @param[in] states The thread states to convert. + * @param[in] buffer The buffer for the text representation. + * @param[in] buffer_size The buffer size in characters. + * + * @retval The length of the text representation. May be greater than the + * buffer size if truncation occurred. + */ +size_t rtems_assoc_thread_states_to_string( + uint32_t states, + char *buffer, + size_t buffer_size +); + #ifdef __cplusplus } #endif diff --git a/cpukit/libcsupport/src/assocthreadstatestostring.c b/cpukit/libcsupport/src/assocthreadstatestostring.c new file mode 100644 index 0000000000..3454e34e51 --- /dev/null +++ b/cpukit/libcsupport/src/assocthreadstatestostring.c @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2016 embedded brains GmbH. + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.org/license/LICENSE. + */ + +#if HAVE_CONFIG_H +#include "config.h" +#endif + +#include <rtems/assoc.h> +#include <rtems/score/statesimpl.h> + +static const rtems_assoc_32_pair state_pairs[] = { + { STATES_THREAD_QUEUE_WITH_IDENTIFIER, "ID" }, + { STATES_WAITING_FOR_MUTEX, "MTX" }, + { STATES_WAITING_FOR_SEMAPHORE, "SEM" }, + { STATES_WAITING_FOR_EVENT, "EV" }, + { STATES_WAITING_FOR_SYSTEM_EVENT, "SYSEV" }, + { STATES_WAITING_FOR_MESSAGE, "MSG" }, + { STATES_WAITING_FOR_CONDITION_VARIABLE, "CV" }, + { STATES_WAITING_FOR_FUTEX, "FTX" }, + { STATES_WAITING_FOR_BSD_WAKEUP, "WK" }, + { STATES_WAITING_FOR_TIME, "TIME" }, + { STATES_WAITING_FOR_PERIOD, "PER" }, + { STATES_WAITING_FOR_SIGNAL, "SIG" }, + { STATES_WAITING_FOR_BARRIER, "BAR" }, + { STATES_WAITING_FOR_RWLOCK, "RW" }, + { STATES_WAITING_FOR_JOIN_AT_EXIT, "JATX" }, + { STATES_WAITING_FOR_JOIN, "JOIN" }, + { STATES_SUSPENDED, "SUSP" }, + { STATES_WAITING_FOR_SEGMENT, "SEG" }, + { STATES_LIFE_IS_CHANGING, "LIFE" }, + { STATES_DEBUGGER, "DBG" }, + { STATES_INTERRUPTIBLE_BY_SIGNAL, "IS" }, + { STATES_WAITING_FOR_RPC_REPLY, "RPC" }, + { STATES_ZOMBIE, "ZOMBI" }, + { STATES_DORMANT, "DORM" } +}; + +size_t rtems_assoc_thread_states_to_string( + uint32_t states, + char *buffer, + size_t buffer_size +) +{ + return rtems_assoc_32_to_string( + states, + buffer, + buffer_size, + state_pairs, + RTEMS_ARRAY_SIZE( state_pairs ), + ":", + "READY" + ); +} |