summaryrefslogtreecommitdiff
path: root/ACE/ace/OS_NS_errno.cpp
blob: 537b325925779b4c09efa8a2698b2e2c7e1e5cbc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
// -*- 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