summaryrefslogtreecommitdiffstats
path: root/cpukit
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2018-05-25 14:09:46 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2018-06-05 07:08:40 +0200
commit7d7c50def0624db287a5b143a61c72a38f06683f (patch)
treeeccb3d6f387163203fa56c6e2de9d00f1878f3e7 /cpukit
parentcapture: Use unlimited objects (diff)
downloadrtems-7d7c50def0624db287a5b143a61c72a38f06683f.tar.bz2
rtems: Move _Status_Object_name_errors_to_status
Move _Status_Object_name_errors_to_status to a separate file to avoid a dependency on errno. Dependencies to errno are hard to be removed by the linker garbage collection.
Diffstat (limited to 'cpukit')
-rw-r--r--cpukit/rtems/Makefile.am1
-rw-r--r--cpukit/rtems/src/status.c50
-rw-r--r--cpukit/rtems/src/statustoerrno.c66
3 files changed, 67 insertions, 50 deletions
diff --git a/cpukit/rtems/Makefile.am b/cpukit/rtems/Makefile.am
index b8694b8022..7af4ec7deb 100644
--- a/cpukit/rtems/Makefile.am
+++ b/cpukit/rtems/Makefile.am
@@ -183,6 +183,7 @@ librtems_a_SOURCES += src/modes.c
librtems_a_SOURCES += src/status.c
librtems_a_SOURCES += src/statustext.c
+librtems_a_SOURCES += src/statustoerrno.c
librtems_a_SOURCES += src/getcurrentprocessor.c
librtems_a_SOURCES += src/getprocessorcount.c
diff --git a/cpukit/rtems/src/status.c b/cpukit/rtems/src/status.c
index 3eadea59f0..a18e32f965 100644
--- a/cpukit/rtems/src/status.c
+++ b/cpukit/rtems/src/status.c
@@ -14,7 +14,6 @@
*/
#include <rtems/rtems/statusimpl.h>
-#include <errno.h>
const rtems_status_code _Status_Object_name_errors_to_status[] = {
/** This maps OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL to RTEMS_SUCCESSFUL. */
@@ -28,52 +27,3 @@ const rtems_status_code _Status_Object_name_errors_to_status[] = {
/** This maps OBJECTS_INVALID_NODE to RTEMS_INVALID_NODE. */
RTEMS_INVALID_NODE
};
-
-static const int status_code_to_errno [RTEMS_STATUS_CODES_LAST + 1] = {
- [RTEMS_SUCCESSFUL] = 0,
- [RTEMS_TASK_EXITTED] = EIO,
- [RTEMS_MP_NOT_CONFIGURED] = EIO,
- [RTEMS_INVALID_NAME] = EINVAL,
- [RTEMS_INVALID_ID] = EIO,
- [RTEMS_TOO_MANY] = EIO,
- [RTEMS_TIMEOUT] = ETIMEDOUT,
- [RTEMS_OBJECT_WAS_DELETED] = EIO,
- [RTEMS_INVALID_SIZE] = EIO,
- [RTEMS_INVALID_ADDRESS] = EIO,
- [RTEMS_INVALID_NUMBER] = EBADF,
- [RTEMS_NOT_DEFINED] = EIO,
- [RTEMS_RESOURCE_IN_USE] = EBUSY,
- [RTEMS_UNSATISFIED] = ENODEV,
- [RTEMS_INCORRECT_STATE] = EIO,
- [RTEMS_ALREADY_SUSPENDED] = EIO,
- [RTEMS_ILLEGAL_ON_SELF] = EIO,
- [RTEMS_ILLEGAL_ON_REMOTE_OBJECT] = EIO,
- [RTEMS_CALLED_FROM_ISR] = EIO,
- [RTEMS_INVALID_PRIORITY] = EIO,
- [RTEMS_INVALID_CLOCK] = EINVAL,
- [RTEMS_INVALID_NODE] = EINVAL,
- [RTEMS_NOT_CONFIGURED] = ENOSYS,
- [RTEMS_NOT_OWNER_OF_RESOURCE] = EPERM,
- [RTEMS_NOT_IMPLEMENTED] = ENOSYS,
- [RTEMS_INTERNAL_ERROR] = EIO,
- [RTEMS_NO_MEMORY] = ENOMEM,
- [RTEMS_IO_ERROR] = EIO,
- [RTEMS_PROXY_BLOCKING] = EIO
-};
-
-int rtems_status_code_to_errno(rtems_status_code sc)
-{
- if (sc == RTEMS_SUCCESSFUL) {
- return 0;
- } else {
- int eno = EINVAL;
-
- if ((unsigned) sc <= RTEMS_STATUS_CODES_LAST) {
- eno = status_code_to_errno [sc];
- }
-
- errno = eno;
-
- return -1;
- }
-}
diff --git a/cpukit/rtems/src/statustoerrno.c b/cpukit/rtems/src/statustoerrno.c
new file mode 100644
index 0000000000..8f34ff5921
--- /dev/null
+++ b/cpukit/rtems/src/statustoerrno.c
@@ -0,0 +1,66 @@
+/**
+ * @file
+ *
+ * @brief Status Mapping Arrays
+ * @ingroup ClassicStatus
+ */
+
+/* COPYRIGHT (c) 1989-2013.
+ * On-Line Applications Research Corporation (OAR).
+ *
+ * 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.
+ */
+
+#include <rtems/rtems/statusimpl.h>
+#include <errno.h>
+
+static const int status_code_to_errno [RTEMS_STATUS_CODES_LAST + 1] = {
+ [RTEMS_SUCCESSFUL] = 0,
+ [RTEMS_TASK_EXITTED] = EIO,
+ [RTEMS_MP_NOT_CONFIGURED] = EIO,
+ [RTEMS_INVALID_NAME] = EINVAL,
+ [RTEMS_INVALID_ID] = EIO,
+ [RTEMS_TOO_MANY] = EIO,
+ [RTEMS_TIMEOUT] = ETIMEDOUT,
+ [RTEMS_OBJECT_WAS_DELETED] = EIO,
+ [RTEMS_INVALID_SIZE] = EIO,
+ [RTEMS_INVALID_ADDRESS] = EIO,
+ [RTEMS_INVALID_NUMBER] = EBADF,
+ [RTEMS_NOT_DEFINED] = EIO,
+ [RTEMS_RESOURCE_IN_USE] = EBUSY,
+ [RTEMS_UNSATISFIED] = ENODEV,
+ [RTEMS_INCORRECT_STATE] = EIO,
+ [RTEMS_ALREADY_SUSPENDED] = EIO,
+ [RTEMS_ILLEGAL_ON_SELF] = EIO,
+ [RTEMS_ILLEGAL_ON_REMOTE_OBJECT] = EIO,
+ [RTEMS_CALLED_FROM_ISR] = EIO,
+ [RTEMS_INVALID_PRIORITY] = EIO,
+ [RTEMS_INVALID_CLOCK] = EINVAL,
+ [RTEMS_INVALID_NODE] = EINVAL,
+ [RTEMS_NOT_CONFIGURED] = ENOSYS,
+ [RTEMS_NOT_OWNER_OF_RESOURCE] = EPERM,
+ [RTEMS_NOT_IMPLEMENTED] = ENOSYS,
+ [RTEMS_INTERNAL_ERROR] = EIO,
+ [RTEMS_NO_MEMORY] = ENOMEM,
+ [RTEMS_IO_ERROR] = EIO,
+ [RTEMS_PROXY_BLOCKING] = EIO
+};
+
+int rtems_status_code_to_errno(rtems_status_code sc)
+{
+ if (sc == RTEMS_SUCCESSFUL) {
+ return 0;
+ } else {
+ int eno = EINVAL;
+
+ if ((unsigned) sc <= RTEMS_STATUS_CODES_LAST) {
+ eno = status_code_to_errno [sc];
+ }
+
+ errno = eno;
+
+ return -1;
+ }
+}