Files
azerothcore-wotlk/deps/acelite/ace/OS_NS_errno.cpp
2020-11-11 09:09:02 -06:00

151 lines
4.3 KiB
C++

// -*- C++ -*-
#include "ace/OS_NS_errno.h"
#if !defined (ACE_HAS_INLINED_OSCALLS)
# 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