diff options
Diffstat (limited to 'ACE/ace/OS_NS_errno.cpp')
-rw-r--r-- | ACE/ace/OS_NS_errno.cpp | 143 |
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 |