summaryrefslogtreecommitdiffstats
path: root/cpukit/rtems
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2014-02-05 17:00:09 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2014-02-06 08:47:02 +0100
commit920a43e6392dfe60ad8bf4bcce73fd1c97d6aa5a (patch)
tree1b4757300bc435e408078ff0588a8d2e73fe76ae /cpukit/rtems
parentscore: _CPU_Context_switch_to_first_task_smp() (diff)
downloadrtems-920a43e6392dfe60ad8bf4bcce73fd1c97d6aa5a.tar.bz2
rtems: Add rtems_status_code_description()
Diffstat (limited to 'cpukit/rtems')
-rw-r--r--cpukit/rtems/Makefile.am1
-rw-r--r--cpukit/rtems/include/rtems/rtems/status.h10
-rw-r--r--cpukit/rtems/src/statusdesc.c69
3 files changed, 80 insertions, 0 deletions
diff --git a/cpukit/rtems/Makefile.am b/cpukit/rtems/Makefile.am
index fd5af5aaa1..f219db8d7b 100644
--- a/cpukit/rtems/Makefile.am
+++ b/cpukit/rtems/Makefile.am
@@ -255,6 +255,7 @@ librtems_a_SOURCES += src/workspacegreedy.c
librtems_a_SOURCES += src/modes.c
librtems_a_SOURCES += src/status.c
+librtems_a_SOURCES += src/statusdesc.c
if HAS_MP
# We only build multiprocessing related files if HAS_MP was defined
diff --git a/cpukit/rtems/include/rtems/rtems/status.h b/cpukit/rtems/include/rtems/rtems/status.h
index 89042883fb..19df500497 100644
--- a/cpukit/rtems/include/rtems/rtems/status.h
+++ b/cpukit/rtems/include/rtems/rtems/status.h
@@ -241,6 +241,16 @@ RTEMS_INLINE_ROUTINE bool rtems_are_statuses_equal(
*/
int rtems_status_code_to_errno(rtems_status_code sc);
+/**
+ * @brief Returns a description for a status code.
+ *
+ * @param[in] code The status code.
+ *
+ * @retval description The status code description.
+ * @retval ? The passed status code is invalid.
+ */
+const char *rtems_status_code_description( rtems_status_code code );
+
/**@}*/
#ifdef __cplusplus
diff --git a/cpukit/rtems/src/statusdesc.c b/cpukit/rtems/src/statusdesc.c
new file mode 100644
index 0000000000..4cc426d0a9
--- /dev/null
+++ b/cpukit/rtems/src/statusdesc.c
@@ -0,0 +1,69 @@
+/**
+ * @file
+ *
+ * @ingroup ClassicStatus
+ */
+
+/*
+ * Copyright (c) 2014 embedded brains GmbH. All rights reserved.
+ *
+ * embedded brains GmbH
+ * Dornierstr. 4
+ * 82178 Puchheim
+ * Germany
+ * <rtems@embedded-brains.de>
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.com/license/LICENSE.
+ */
+
+#if HAVE_CONFIG_H
+ #include "config.h"
+#endif
+
+#include <rtems.h>
+
+static const char *const status_code_desc[] = {
+ "RTEMS_SUCCESSFUL",
+ "RTEMS_TASK_EXITTED",
+ "RTEMS_MP_NOT_CONFIGURED",
+ "RTEMS_INVALID_NAME",
+ "RTEMS_INVALID_ID",
+ "RTEMS_TOO_MANY",
+ "RTEMS_TIMEOUT",
+ "RTEMS_OBJECT_WAS_DELETED",
+ "RTEMS_INVALID_SIZE",
+ "RTEMS_INVALID_ADDRESS",
+ "RTEMS_INVALID_NUMBER",
+ "RTEMS_NOT_DEFINED",
+ "RTEMS_RESOURCE_IN_USE",
+ "RTEMS_UNSATISFIED",
+ "RTEMS_INCORRECT_STATE",
+ "RTEMS_ALREADY_SUSPENDED",
+ "RTEMS_ILLEGAL_ON_SELF",
+ "RTEMS_ILLEGAL_ON_REMOTE_OBJECT",
+ "RTEMS_CALLED_FROM_ISR",
+ "RTEMS_INVALID_PRIORITY",
+ "RTEMS_INVALID_CLOCK",
+ "RTEMS_INVALID_NODE",
+ "RTEMS_NOT_CONFIGURED",
+ "RTEMS_NOT_OWNER_OF_RESOURCE",
+ "RTEMS_NOT_IMPLEMENTED",
+ "RTEMS_INTERNAL_ERROR",
+ "RTEMS_NO_MEMORY",
+ "RTEMS_IO_ERROR",
+ "RTEMS_PROXY_BLOCKING"
+};
+
+const char *rtems_status_code_description( rtems_status_code code )
+{
+ size_t i = code;
+ const char *desc = "?";
+
+ if ( i < RTEMS_ARRAY_SIZE( status_code_desc ) ) {
+ desc = status_code_desc [i];
+ }
+
+ return desc;
+}