summaryrefslogtreecommitdiff
path: root/ACE/ace/OS_NS_errno.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ACE/ace/OS_NS_errno.cpp')
-rw-r--r--ACE/ace/OS_NS_errno.cpp143
1 files changed, 143 insertions, 0 deletions
diff --git a/ACE/ace/OS_NS_errno.cpp b/ACE/ace/OS_NS_errno.cpp
index f84975d40af..537b3259257 100644
--- a/ACE/ace/OS_NS_errno.cpp
+++ b/ACE/ace/OS_NS_errno.cpp
@@ -5,3 +5,146 @@
# include "ace/OS_NS_errno.inl"
#endif /* ACE_HAS_INLINED_OSCALLS */
+
+#ifdef ACE_MQX
+int
+ACE_OS::mqx_error_to_errno(int mqx_error)
+{
+ switch (mqx_error)
+ {
+ // Not really an error.
+ case FS_EOF:
+ return 0;
+
+ case FS_INVALID_FUNCTION_CODE:
+ case FS_INVALID_PARAMETER:
+ case FS_INVALID_HANDLE:
+ case FS_ERROR_INVALID_DRIVE_HANDLE:
+ case FS_ERROR_INVALID_FILE_HANDLE:
+ case MQX_INVALID_POINTER:
+ case MQX_INVALID_PARAMETER:
+ case FS_INVALID_MEMORY_BLOCK_ADDRESS:
+ case MQX_INVALID_SIZE:
+ case MQX_INVALID_MEMORY_BLOCK:
+ case MQX_INVALID_TASK_PRIORITY:
+ case MQX_INVALID_TASK_STATE:
+ case MQX_INVALID_TASK_ID:
+ case MQX_INVALID_PROCESSOR_NUMBER:
+ case MQX_INVALID_VECTORED_INTERRUPT:
+ case MQX_INVALID_TEMPLATE_INDEX:
+ case MQX_INVALID_CONFIGURATION:
+ case MQX_INVALID_COMPONENT_HANDLE:
+ case MQX_INVALID_COMPONENT_BASE:
+ case MQX_INVALID_COMPONENT_NAME:
+ case MQX_INVALID_HANDLE:
+ case MQX_INVALID_TASK_QUEUE:
+ case MQX_INVALID_LWSEM:
+ case MQX_SCHED_INVALID_POLICY:
+ case MQX_SCHED_INVALID_PARAMETER_PTR:
+ case MQX_SCHED_INVALID_PARAMETER:
+ case MQX_SCHED_INVALID_TASK_ID:
+ case MQX_INVALID_IO_CHANNEL:
+ case MQX_INVALID_DEVICE:
+ case MQX_INVALID_CLOCK_SPEED:
+ case MQX_IPC_INVALID_MESSAGE:
+ case MQX_MEM_POOL_INVALID:
+ case MQX_LWMEM_POOL_INVALID:
+ case MQX_LWEVENT_INVALID:
+ case MQX_LWTIMER_INVALID:
+ return EINVAL;
+ case FS_FILE_NOT_FOUND:
+ case FS_PATH_NOT_FOUND:
+ return ENOENT;
+ case FS_ACCESS_DENIED:
+ case FS_OPERATION_NOT_ALLOWED:
+ case FS_SHARING_VIOLATION:
+ case MQX_NOT_RESOURCE_OWNER:
+ case MQX_ACCESS_ERROR:
+ return EPERM;
+ case FS_INSUFFICIENT_MEMORY:
+ case FS_PMGR_INSUF_MEMORY:
+ case MQX_OUT_OF_MEMORY:
+ case MQX_KERNEL_MEMORY_TOO_SMALL:
+ case MQX_MEM_POOL_TOO_SMALL:
+ case MQX_OUT_OF_MMU_PAGE_TABLES:
+ return ENOMEM;
+ case FS_FILE_EXISTS:
+ case MQX_COMPONENT_EXISTS:
+ case MQX_IPC_ROUTE_EXISTS:
+ case MQX_MMU_CONTEXT_EXISTS:
+ case FS_ALREADY_ASSIGNED:
+ return EEXIST;
+ case FS_DISK_FULL:
+ case FS_ROOT_DIR_FULL:
+ return ENOSPC;
+ case FS_DISK_IS_WRITE_PROTECTED:
+ return EROFS;
+ case FS_BAD_DISK_UNIT:
+ case FS_INVALID_LENGTH_IN_DISK_OPERATION:
+ case FS_NOT_A_DOS_DISK:
+ case FS_SECTOR_NOT_FOUND:
+ case FS_WRITE_FAULT:
+ case FS_READ_FAULT:
+ case FS_NOT_INITIALIZED:
+ case FS_ERROR_UNKNOWN_FS_VERSION:
+ case FS_LOST_CHAIN:
+ case FS_INVALID_DEVICE:
+ case FS_INVALID_CLUSTER_NUMBER:
+ case FS_FAILED_TO_DELETE_LFN:
+ case FS_BAD_LFN_ENTRY:
+ case FS_PMGR_INVALID_PARTITION:
+ case FS_PMGR_UNKNOWN_PARTITION:
+ case FS_PMGR_INVALID_PARTTABLE:
+ case FS_PMGR_EXFAT_PARTITION:
+ case MQX_IO_OPERATION_NOT_AVAILABLE:
+ return EIO;
+ case FS_CANNOT_CREATE_DIRECTORY:
+ return ENOTDIR;
+ case MQX_LWSEM_WAIT_TIMEOUT:
+ return ETIME;
+
+ // These seem like generic errors
+ case MQX_MMU_ERROR:
+ case MQX_ERROR:
+
+ // Need more info to categorize
+ case FS_ATTEMPT_TO_REMOVE_CURRENT_DIR:
+ case MQX_INVALID_CHECKSUM:
+ case MQX_OUT_OF_TASK_DESCRIPTORS:
+ case MQX_CANNOT_CALL_FUNCTION_FROM_ISR:
+ case MQX_TASK_QUEUE_EMPTY:
+ case MQX_NO_TASK_TEMPLATE:
+ case MQX_COMPONENT_DOES_NOT_EXIST:
+ case MQX_COULD_NOT_CREATE_IPC_TASK:
+ case MQX_TOO_MANY_PRIORITY_LEVELS:
+ case MQX_TOO_MANY_INTERRUPTS:
+ case MQX_DUPLICATE_TASK_TEMPLATE_INDEX:
+ case MQX_TIMER_ISR_INSTALL_FAIL:
+ case MQX_INTER_PROCESSOR_INIT_FAILED:
+ case MQX_IPC_SERVICE_NOT_AVAILABLE:
+ case MQX_MMU_CONTEXT_DOES_NOT_EXIST:
+ case MQX_MMU_PARENT_TASK_CANNOT_BE_MMU:
+ case MQX_RTC_UNLOCK_FAILED:
+ case MQX_NO_USER_TASKS:
+ case MQX_TOO_MANY_USER_TASKS:
+ case MQX_TASKQ_CREATE_FAILED:
+ case MQX_INVALD_INT_ENABLE:
+ case MQX_UNABLE_TO_CREATE_COMPONENT:
+ case MQX_CLOCK_TRIM_FAILED:
+
+ /* These are serious and should definitely return EFAULT unless there is a
+ * more appropriate error code.
+ */
+ case MQX_CORRUPT_MEMORY_SYSTEM:
+ case MQX_CORRUPT_STORAGE_POOL:
+ case MQX_CORRUPT_STORAGE_POOL_FREE_LIST:
+ case MQX_CORRUPT_STORAGE_POOL_POINTERS:
+ case MQX_CORRUPT_QUEUE:
+ case MQX_CORRUPT_INTERRUPT_STACK:
+ case MQX_UNHANDLED_INTERRUPT:
+
+ default:
+ return EFAULT;
+ }
+}
+#endif