Commit 637947f19dd2d72a0ecb2dfd6c946b8ffeabe765
1 parent
c12ab05c
linux-user errno mapping, by Stuart Anderson.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2908 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
4 changed files
with
455 additions
and
1 deletions
linux-user/errno_defs.h
0 → 100644
| 1 | +/* | ||
| 2 | + * Target definitions of errnos. These may be overridden by an | ||
| 3 | + * architecture specific header if needed. | ||
| 4 | + * | ||
| 5 | + * Taken from asm-generic/errno-base.h and asm-generic/errno.h | ||
| 6 | + */ | ||
| 7 | +#define TARGET_EPERM 1 /* Operation not permitted */ | ||
| 8 | +#define TARGET_ENOENT 2 /* No such file or directory */ | ||
| 9 | +#define TARGET_ESRCH 3 /* No such process */ | ||
| 10 | +#define TARGET_EINTR 4 /* Interrupted system call */ | ||
| 11 | +#define TARGET_EIO 5 /* I/O error */ | ||
| 12 | +#define TARGET_ENXIO 6 /* No such device or address */ | ||
| 13 | +#define TARGET_E2BIG 7 /* Argument list too long */ | ||
| 14 | +#define TARGET_ENOEXEC 8 /* TARGET_Exec format error */ | ||
| 15 | +#define TARGET_EBADF 9 /* Bad file number */ | ||
| 16 | +#define TARGET_ECHILD 10 /* No child processes */ | ||
| 17 | +#define TARGET_EAGAIN 11 /* Try again */ | ||
| 18 | +#define TARGET_ENOMEM 12 /* Out of memory */ | ||
| 19 | +#define TARGET_EACCES 13 /* Permission denied */ | ||
| 20 | +#define TARGET_EFAULT 14 /* Bad address */ | ||
| 21 | +#define TARGET_ENOTBLK 15 /* Block device required */ | ||
| 22 | +#define TARGET_EBUSY 16 /* Device or resource busy */ | ||
| 23 | +#define TARGET_EEXIST 17 /* File exists */ | ||
| 24 | +#define TARGET_EXDEV 18 /* Cross-device link */ | ||
| 25 | +#define TARGET_ENODEV 19 /* No such device */ | ||
| 26 | +#define TARGET_ENOTDIR 20 /* Not a directory */ | ||
| 27 | +#define TARGET_EISDIR 21 /* Is a directory */ | ||
| 28 | +#define TARGET_EINVAL 22 /* Invalid argument */ | ||
| 29 | +#define TARGET_ENFILE 23 /* File table overflow */ | ||
| 30 | +#define TARGET_EMFILE 24 /* Too many open files */ | ||
| 31 | +#define TARGET_ENOTTY 25 /* Not a typewriter */ | ||
| 32 | +#define TARGET_ETXTBSY 26 /* Text file busy */ | ||
| 33 | +#define TARGET_EFBIG 27 /* File too large */ | ||
| 34 | +#define TARGET_ENOSPC 28 /* No space left on device */ | ||
| 35 | +#define TARGET_ESPIPE 29 /* Illegal seek */ | ||
| 36 | +#define TARGET_EROFS 30 /* Read-only file system */ | ||
| 37 | +#define TARGET_EMLINK 31 /* Too many links */ | ||
| 38 | +#define TARGET_EPIPE 32 /* Broken pipe */ | ||
| 39 | +#define TARGET_EDOM 33 /* Math argument out of domain of func */ | ||
| 40 | +#define TARGET_ERANGE 34 /* Math result not representable */ | ||
| 41 | + | ||
| 42 | +#define TARGET_EDEADLK 35 /* Resource deadlock would occur */ | ||
| 43 | +#define TARGET_ENAMETOOLONG 36 /* File name too long */ | ||
| 44 | +#define TARGET_ENOLCK 37 /* No record locks available */ | ||
| 45 | +#define TARGET_ENOSYS 38 /* Function not implemented */ | ||
| 46 | +#define TARGET_ENOTEMPTY 39 /* Directory not empty */ | ||
| 47 | +#define TARGET_ELOOP 40 /* Too many symbolic links encountered */ | ||
| 48 | + | ||
| 49 | +#define TARGET_ENOMSG 42 /* No message of desired type */ | ||
| 50 | +#define TARGET_EIDRM 43 /* Identifier removed */ | ||
| 51 | +#define TARGET_ECHRNG 44 /* Channel number out of range */ | ||
| 52 | +#define TARGET_EL2NSYNC 45 /* Level 2 not synchronized */ | ||
| 53 | +#define TARGET_EL3HLT 46 /* Level 3 halted */ | ||
| 54 | +#define TARGET_EL3RST 47 /* Level 3 reset */ | ||
| 55 | +#define TARGET_ELNRNG 48 /* Link number out of range */ | ||
| 56 | +#define TARGET_EUNATCH 49 /* Protocol driver not attached */ | ||
| 57 | +#define TARGET_ENOCSI 50 /* No CSI structure available */ | ||
| 58 | +#define TARGET_EL2HLT 51 /* Level 2 halted */ | ||
| 59 | +#define TARGET_EBADE 52 /* Invalid exchange */ | ||
| 60 | +#define TARGET_EBADR 53 /* Invalid request descriptor */ | ||
| 61 | +#define TARGET_EXFULL 54 /* TARGET_Exchange full */ | ||
| 62 | +#define TARGET_ENOANO 55 /* No anode */ | ||
| 63 | +#define TARGET_EBADRQC 56 /* Invalid request code */ | ||
| 64 | +#define TARGET_EBADSLT 57 /* Invalid slot */ | ||
| 65 | + | ||
| 66 | +#define TARGET_EBFONT 59 /* Bad font file format */ | ||
| 67 | +#define TARGET_ENOSTR 60 /* Device not a stream */ | ||
| 68 | +#define TARGET_ENODATA 61 /* No data available */ | ||
| 69 | +#define TARGET_ETIME 62 /* Timer expired */ | ||
| 70 | +#define TARGET_ENOSR 63 /* Out of streams resources */ | ||
| 71 | +#define TARGET_ENONET 64 /* Machine is not on the network */ | ||
| 72 | +#define TARGET_ENOPKG 65 /* Package not installed */ | ||
| 73 | +#define TARGET_EREMOTE 66 /* Object is remote */ | ||
| 74 | +#define TARGET_ENOLINK 67 /* Link has been severed */ | ||
| 75 | +#define TARGET_EADV 68 /* Advertise error */ | ||
| 76 | +#define TARGET_ESRMNT 69 /* Srmount error */ | ||
| 77 | +#define TARGET_ECOMM 70 /* Communication error on send */ | ||
| 78 | +#define TARGET_EPROTO 71 /* Protocol error */ | ||
| 79 | +#define TARGET_EMULTIHOP 72 /* Multihop attempted */ | ||
| 80 | +#define TARGET_EDOTDOT 73 /* RFS specific error */ | ||
| 81 | +#define TARGET_EBADMSG 74 /* Not a data message */ | ||
| 82 | +#define TARGET_EOVERFLOW 75 /* Value too large for defined data type */ | ||
| 83 | +#define TARGET_ENOTUNIQ 76 /* Name not unique on network */ | ||
| 84 | +#define TARGET_EBADFD 77 /* File descriptor in bad state */ | ||
| 85 | +#define TARGET_EREMCHG 78 /* Remote address changed */ | ||
| 86 | +#define TARGET_ELIBACC 79 /* Can not access a needed shared library */ | ||
| 87 | +#define TARGET_ELIBBAD 80 /* Accessing a corrupted shared library */ | ||
| 88 | +#define TARGET_ELIBSCN 81 /* .lib section in a.out corrupted */ | ||
| 89 | +#define TARGET_ELIBMAX 82 /* Attempting to link in too many shared libraries */ | ||
| 90 | +#define TARGET_ELIBEXEC 83 /* Cannot exec a shared library directly */ | ||
| 91 | +#define TARGET_EILSEQ 84 /* Illegal byte sequence */ | ||
| 92 | +#define TARGET_ERESTART 85 /* Interrupted system call should be restarted */ | ||
| 93 | +#define TARGET_ESTRPIPE 86 /* Streams pipe error */ | ||
| 94 | +#define TARGET_EUSERS 87 /* Too many users */ | ||
| 95 | +#define TARGET_ENOTSOCK 88 /* Socket operation on non-socket */ | ||
| 96 | +#define TARGET_EDESTADDRREQ 89 /* Destination address required */ | ||
| 97 | +#define TARGET_EMSGSIZE 90 /* Message too long */ | ||
| 98 | +#define TARGET_EPROTOTYPE 91 /* Protocol wrong type for socket */ | ||
| 99 | +#define TARGET_ENOPROTOOPT 92 /* Protocol not available */ | ||
| 100 | +#define TARGET_EPROTONOSUPPORT 93 /* Protocol not supported */ | ||
| 101 | +#define TARGET_ESOCKTNOSUPPORT 94 /* Socket type not supported */ | ||
| 102 | +#define TARGET_EOPNOTSUPP 95 /* Operation not supported on transport endpoint */ | ||
| 103 | +#define TARGET_EPFNOSUPPORT 96 /* Protocol family not supported */ | ||
| 104 | +#define TARGET_EAFNOSUPPORT 97 /* Address family not supported by protocol */ | ||
| 105 | +#define TARGET_EADDRINUSE 98 /* Address already in use */ | ||
| 106 | +#define TARGET_EADDRNOTAVAIL 99 /* Cannot assign requested address */ | ||
| 107 | +#define TARGET_ENETDOWN 100 /* Network is down */ | ||
| 108 | +#define TARGET_ENETUNREACH 101 /* Network is unreachable */ | ||
| 109 | +#define TARGET_ENETRESET 102 /* Network dropped connection because of reset */ | ||
| 110 | +#define TARGET_ECONNABORTED 103 /* Software caused connection abort */ | ||
| 111 | +#define TARGET_ECONNRESET 104 /* Connection reset by peer */ | ||
| 112 | +#define TARGET_ENOBUFS 105 /* No buffer space available */ | ||
| 113 | +#define TARGET_EISCONN 106 /* Transport endpoint is already connected */ | ||
| 114 | +#define TARGET_ENOTCONN 107 /* Transport endpoint is not connected */ | ||
| 115 | +#define TARGET_ESHUTDOWN 108 /* Cannot send after transport endpoint shutdown */ | ||
| 116 | +#define TARGET_ETOOMANYREFS 109 /* Too many references: cannot splice */ | ||
| 117 | +#define TARGET_ETIMEDOUT 110 /* Connection timed out */ | ||
| 118 | +#define TARGET_ECONNREFUSED 111 /* Connection refused */ | ||
| 119 | +#define TARGET_EHOSTDOWN 112 /* Host is down */ | ||
| 120 | +#define TARGET_EHOSTUNREACH 113 /* No route to host */ | ||
| 121 | +#define TARGET_EALREADY 114 /* Operation already in progress */ | ||
| 122 | +#define TARGET_EINPROGRESS 115 /* Operation now in progress */ | ||
| 123 | +#define TARGET_ESTALE 116 /* Stale NFS file handle */ | ||
| 124 | +#define TARGET_EUCLEAN 117 /* Structure needs cleaning */ | ||
| 125 | +#define TARGET_ENOTNAM 118 /* Not a XENIX named type file */ | ||
| 126 | +#define TARGET_ENAVAIL 119 /* No XENIX semaphores available */ | ||
| 127 | +#define TARGET_EISNAM 120 /* Is a named type file */ | ||
| 128 | +#define TARGET_EREMOTEIO 121 /* Remote I/O error */ | ||
| 129 | +#define TARGET_EDQUOT 122 /* Quota exceeded */ | ||
| 130 | + | ||
| 131 | +#define TARGET_ENOMEDIUM 123 /* No medium found */ | ||
| 132 | +#define TARGET_EMEDIUMTYPE 124 /* Wrong medium type */ | ||
| 133 | +#define TARGET_ECANCELED 125 /* Operation Canceled */ | ||
| 134 | +#define TARGET_ENOKEY 126 /* Required key not available */ | ||
| 135 | +#define TARGET_EKEYEXPIRED 127 /* Key has expired */ | ||
| 136 | +#define TARGET_EKEYREVOKED 128 /* Key has been revoked */ | ||
| 137 | +#define TARGET_EKEYREJECTED 129 /* Key was rejected by service */ | ||
| 138 | + | ||
| 139 | +/* for robust mutexes */ | ||
| 140 | +#define TARGET_EOWNERDEAD 130 /* Owner died */ | ||
| 141 | +#define TARGET_ENOTRECOVERABLE 131 /* State not recoverable */ | ||
| 142 | + |
linux-user/mips/syscall.h
| @@ -20,4 +20,207 @@ struct target_pt_regs { | @@ -20,4 +20,207 @@ struct target_pt_regs { | ||
| 20 | target_ulong cp0_epc; | 20 | target_ulong cp0_epc; |
| 21 | }; | 21 | }; |
| 22 | 22 | ||
| 23 | +/* Target errno definitions taken from asm-mips/errno.h */ | ||
| 24 | +#undef TARGET_ENOMSG | ||
| 25 | +#define TARGET_ENOMSG 35 /* Identifier removed */ | ||
| 26 | +#undef TARGET_EIDRM | ||
| 27 | +#define TARGET_EIDRM 36 /* Identifier removed */ | ||
| 28 | +#undef TARGET_ECHRNG | ||
| 29 | +#define TARGET_ECHRNG 37 /* Channel number out of range */ | ||
| 30 | +#undef TARGET_EL2NSYNC | ||
| 31 | +#define TARGET_EL2NSYNC 38 /* Level 2 not synchronized */ | ||
| 32 | +#undef TARGET_EL3HLT | ||
| 33 | +#define TARGET_EL3HLT 39 /* Level 3 halted */ | ||
| 34 | +#undef TARGET_EL3RST | ||
| 35 | +#define TARGET_EL3RST 40 /* Level 3 reset */ | ||
| 36 | +#undef TARGET_ELNRNG | ||
| 37 | +#define TARGET_ELNRNG 41 /* Link number out of range */ | ||
| 38 | +#undef TARGET_EUNATCH | ||
| 39 | +#define TARGET_EUNATCH 42 /* Protocol driver not attached */ | ||
| 40 | +#undef TARGET_ENOCSI | ||
| 41 | +#define TARGET_ENOCSI 43 /* No CSI structure available */ | ||
| 42 | +#undef TARGET_EL2HLT | ||
| 43 | +#define TARGET_EL2HLT 44 /* Level 2 halted */ | ||
| 44 | +#undef TARGET_EDEADLK | ||
| 45 | +#define TARGET_EDEADLK 45 /* Resource deadlock would occur */ | ||
| 46 | +#undef TARGET_ENOLCK | ||
| 47 | +#define TARGET_ENOLCK 46 /* No record locks available */ | ||
| 48 | +#undef TARGET_EBADE | ||
| 49 | +#define TARGET_EBADE 50 /* Invalid exchange */ | ||
| 50 | +#undef TARGET_EBADR | ||
| 51 | +#define TARGET_EBADR 51 /* Invalid request descriptor */ | ||
| 52 | +#undef TARGET_EXFULL | ||
| 53 | +#define TARGET_EXFULL 52 /* TARGET_Exchange full */ | ||
| 54 | +#undef TARGET_ENOANO | ||
| 55 | +#define TARGET_ENOANO 53 /* No anode */ | ||
| 56 | +#undef TARGET_EBADRQC | ||
| 57 | +#define TARGET_EBADRQC 54 /* Invalid request code */ | ||
| 58 | +#undef TARGET_EBADSLT | ||
| 59 | +#define TARGET_EBADSLT 55 /* Invalid slot */ | ||
| 60 | +#undef TARGET_EDEADLOCK | ||
| 61 | +#define TARGET_EDEADLOCK 56 /* File locking deadlock error */ | ||
| 62 | +#undef TARGET_EBFONT | ||
| 63 | +#define TARGET_EBFONT 59 /* Bad font file format */ | ||
| 64 | +#undef TARGET_ENOSTR | ||
| 65 | +#define TARGET_ENOSTR 60 /* Device not a stream */ | ||
| 66 | +#undef TARGET_ENODATA | ||
| 67 | +#define TARGET_ENODATA 61 /* No data available */ | ||
| 68 | +#undef TARGET_ETIME | ||
| 69 | +#define TARGET_ETIME 62 /* Timer expired */ | ||
| 70 | +#undef TARGET_ENOSR | ||
| 71 | +#define TARGET_ENOSR 63 /* Out of streams resources */ | ||
| 72 | +#undef TARGET_ENONET | ||
| 73 | +#define TARGET_ENONET 64 /* Machine is not on the network */ | ||
| 74 | +#undef TARGET_ENOPKG | ||
| 75 | +#define TARGET_ENOPKG 65 /* Package not installed */ | ||
| 76 | +#undef TARGET_EREMOTE | ||
| 77 | +#define TARGET_EREMOTE 66 /* Object is remote */ | ||
| 78 | +#undef TARGET_ENOLINK | ||
| 79 | +#define TARGET_ENOLINK 67 /* Link has been severed */ | ||
| 80 | +#undef TARGET_EADV | ||
| 81 | +#define TARGET_EADV 68 /* Advertise error */ | ||
| 82 | +#undef TARGET_ESRMNT | ||
| 83 | +#define TARGET_ESRMNT 69 /* Srmount error */ | ||
| 84 | +#undef TARGET_ECOMM | ||
| 85 | +#define TARGET_ECOMM 70 /* Communication error on send */ | ||
| 86 | +#undef TARGET_EPROTO | ||
| 87 | +#define TARGET_EPROTO 71 /* Protocol error */ | ||
| 88 | +#undef TARGET_EDOTDOT | ||
| 89 | +#define TARGET_EDOTDOT 73 /* RFS specific error */ | ||
| 90 | +#undef TARGET_EMULTIHOP | ||
| 91 | +#define TARGET_EMULTIHOP 74 /* Multihop attempted */ | ||
| 92 | +#undef TARGET_EBADMSG | ||
| 93 | +#define TARGET_EBADMSG 77 /* Not a data message */ | ||
| 94 | +#undef TARGET_ENAMETOOLONG | ||
| 95 | +#define TARGET_ENAMETOOLONG 78 /* File name too long */ | ||
| 96 | +#undef TARGET_EOVERFLOW | ||
| 97 | +#define TARGET_EOVERFLOW 79 /* Value too large for defined data type */ | ||
| 98 | +#undef TARGET_ENOTUNIQ | ||
| 99 | +#define TARGET_ENOTUNIQ 80 /* Name not unique on network */ | ||
| 100 | +#undef TARGET_EBADFD | ||
| 101 | +#define TARGET_EBADFD 81 /* File descriptor in bad state */ | ||
| 102 | +#undef TARGET_EREMCHG | ||
| 103 | +#define TARGET_EREMCHG 82 /* Remote address changed */ | ||
| 104 | +#undef TARGET_ELIBACC | ||
| 105 | +#define TARGET_ELIBACC 83 /* Can not access a needed shared library */ | ||
| 106 | +#undef TARGET_ELIBBAD | ||
| 107 | +#define TARGET_ELIBBAD 84 /* Accessing a corrupted shared library */ | ||
| 108 | +#undef TARGET_ELIBSCN | ||
| 109 | +#define TARGET_ELIBSCN 85 /* .lib section in a.out corrupted */ | ||
| 110 | +#undef TARGET_ELIBMAX | ||
| 111 | +#define TARGET_ELIBMAX 86 /* Attempting to link in too many shared libraries */ | ||
| 112 | +#undef TARGET_ELIBEXEC | ||
| 113 | +#define TARGET_ELIBEXEC 87 /* Cannot exec a shared library directly */ | ||
| 114 | +#undef TARGET_EILSEQ | ||
| 115 | +#define TARGET_EILSEQ 88 /* Illegal byte sequence */ | ||
| 116 | +#undef TARGET_ENOSYS | ||
| 117 | +#define TARGET_ENOSYS 89 /* Function not implemented */ | ||
| 118 | +#undef TARGET_ELOOP | ||
| 119 | +#define TARGET_ELOOP 90 /* Too many symbolic links encountered */ | ||
| 120 | +#undef TARGET_ERESTART | ||
| 121 | +#define TARGET_ERESTART 91 /* Interrupted system call should be restarted */ | ||
| 122 | +#undef TARGET_ESTRPIPE | ||
| 123 | +#define TARGET_ESTRPIPE 92 /* Streams pipe error */ | ||
| 124 | +#undef TARGET_ENOTEMPTY | ||
| 125 | +#define TARGET_ENOTEMPTY 93 /* Directory not empty */ | ||
| 126 | +#undef TARGET_EUSERS | ||
| 127 | +#define TARGET_EUSERS 94 /* Too many users */ | ||
| 128 | +#undef TARGET_ENOTSOCK | ||
| 129 | +#define TARGET_ENOTSOCK 95 /* Socket operation on non-socket */ | ||
| 130 | +#undef TARGET_EDESTADDRREQ | ||
| 131 | +#define TARGET_EDESTADDRREQ 96 /* Destination address required */ | ||
| 132 | +#undef TARGET_EMSGSIZE | ||
| 133 | +#define TARGET_EMSGSIZE 97 /* Message too long */ | ||
| 134 | +#undef TARGET_EPROTOTYPE | ||
| 135 | +#define TARGET_EPROTOTYPE 98 /* Protocol wrong type for socket */ | ||
| 136 | +#undef TARGET_ENOPROTOOPT | ||
| 137 | +#define TARGET_ENOPROTOOPT 99 /* Protocol not available */ | ||
| 138 | +#undef TARGET_EPROTONOSUPPORT | ||
| 139 | +#define TARGET_EPROTONOSUPPORT 120 /* Protocol not supported */ | ||
| 140 | +#undef TARGET_ESOCKTNOSUPPORT | ||
| 141 | +#define TARGET_ESOCKTNOSUPPORT 121 /* Socket type not supported */ | ||
| 142 | +#undef TARGET_EOPNOTSUPP | ||
| 143 | +#define TARGET_EOPNOTSUPP 122 /* Operation not supported on transport endpoint */ | ||
| 144 | +#undef TARGET_EPFNOSUPPORT | ||
| 145 | +#define TARGET_EPFNOSUPPORT 123 /* Protocol family not supported */ | ||
| 146 | +#undef TARGET_EAFNOSUPPORT | ||
| 147 | +#define TARGET_EAFNOSUPPORT 124 /* Address family not supported by protocol */ | ||
| 148 | +#undef TARGET_EADDRINUSE | ||
| 149 | +#define TARGET_EADDRINUSE 125 /* Address already in use */ | ||
| 150 | +#undef TARGET_EADDRNOTAVAIL | ||
| 151 | +#define TARGET_EADDRNOTAVAIL 126 /* Cannot assign requested address */ | ||
| 152 | +#undef TARGET_ENETDOWN | ||
| 153 | +#define TARGET_ENETDOWN 127 /* Network is down */ | ||
| 154 | +#undef TARGET_ENETUNREACH | ||
| 155 | +#define TARGET_ENETUNREACH 128 /* Network is unreachable */ | ||
| 156 | +#undef TARGET_ENETRESET | ||
| 157 | +#define TARGET_ENETRESET 129 /* Network dropped connection because of reset */ | ||
| 158 | +#undef TARGET_ECONNABORTED | ||
| 159 | +#define TARGET_ECONNABORTED 130 /* Software caused connection abort */ | ||
| 160 | +#undef TARGET_ECONNRESET | ||
| 161 | +#define TARGET_ECONNRESET 131 /* Connection reset by peer */ | ||
| 162 | +#undef TARGET_ENOBUFS | ||
| 163 | +#define TARGET_ENOBUFS 132 /* No buffer space available */ | ||
| 164 | +#undef TARGET_EISCONN | ||
| 165 | +#define TARGET_EISCONN 133 /* Transport endpoint is already connected */ | ||
| 166 | +#undef TARGET_ENOTCONN | ||
| 167 | +#define TARGET_ENOTCONN 134 /* Transport endpoint is not connected */ | ||
| 168 | +#undef TARGET_EUCLEAN | ||
| 169 | +#define TARGET_EUCLEAN 135 /* Structure needs cleaning */ | ||
| 170 | +#undef TARGET_ENOTNAM | ||
| 171 | +#define TARGET_ENOTNAM 137 /* Not a XENIX named type file */ | ||
| 172 | +#undef TARGET_ENAVAIL | ||
| 173 | +#define TARGET_ENAVAIL 138 /* No XENIX semaphores available */ | ||
| 174 | +#undef TARGET_EISNAM | ||
| 175 | +#define TARGET_EISNAM 139 /* Is a named type file */ | ||
| 176 | +#undef TARGET_EREMOTEIO | ||
| 177 | +#define TARGET_EREMOTEIO 140 /* Remote I/O error */ | ||
| 178 | +#undef TARGET_EINIT | ||
| 179 | +#define TARGET_EINIT 141 /* Reserved */ | ||
| 180 | +#undef TARGET_EREMDEV | ||
| 181 | +#define TARGET_EREMDEV 142 /* TARGET_Error 142 */ | ||
| 182 | +#undef TARGET_ESHUTDOWN | ||
| 183 | +#define TARGET_ESHUTDOWN 143 /* Cannot send after transport endpoint shutdown */ | ||
| 184 | +#undef TARGET_ETOOMANYREFS | ||
| 185 | +#define TARGET_ETOOMANYREFS 144 /* Too many references: cannot splice */ | ||
| 186 | +#undef TARGET_ETIMEDOUT | ||
| 187 | +#define TARGET_ETIMEDOUT 145 /* Connection timed out */ | ||
| 188 | +#undef TARGET_ECONNREFUSED | ||
| 189 | +#define TARGET_ECONNREFUSED 146 /* Connection refused */ | ||
| 190 | +#undef TARGET_EHOSTDOWN | ||
| 191 | +#define TARGET_EHOSTDOWN 147 /* Host is down */ | ||
| 192 | +#undef TARGET_EHOSTUNREACH | ||
| 193 | +#define TARGET_EHOSTUNREACH 148 /* No route to host */ | ||
| 194 | +#undef TARGET_EALREADY | ||
| 195 | +#define TARGET_EALREADY 149 /* Operation already in progress */ | ||
| 196 | +#undef TARGET_EINPROGRESS | ||
| 197 | +#define TARGET_EINPROGRESS 150 /* Operation now in progress */ | ||
| 198 | +#undef TARGET_ESTALE | ||
| 199 | +#define TARGET_ESTALE 151 /* Stale NFS file handle */ | ||
| 200 | +#undef TARGET_ECANCELED | ||
| 201 | +#define TARGET_ECANCELED 158 /* AIO operation canceled */ | ||
| 202 | +/* | ||
| 203 | + * These error are Linux extensions. | ||
| 204 | + */ | ||
| 205 | +#undef TARGET_ENOMEDIUM | ||
| 206 | +#define TARGET_ENOMEDIUM 159 /* No medium found */ | ||
| 207 | +#undef TARGET_EMEDIUMTYPE | ||
| 208 | +#define TARGET_EMEDIUMTYPE 160 /* Wrong medium type */ | ||
| 209 | +#undef TARGET_ENOKEY | ||
| 210 | +#define TARGET_ENOKEY 161 /* Required key not available */ | ||
| 211 | +#undef TARGET_EKEYEXPIRED | ||
| 212 | +#define TARGET_EKEYEXPIRED 162 /* Key has expired */ | ||
| 213 | +#undef TARGET_EKEYREVOKED | ||
| 214 | +#define TARGET_EKEYREVOKED 163 /* Key has been revoked */ | ||
| 215 | +#undef TARGET_EKEYREJECTED | ||
| 216 | +#define TARGET_EKEYREJECTED 164 /* Key was rejected by service */ | ||
| 217 | + | ||
| 218 | +/* for robust mutexes */ | ||
| 219 | +#undef TARGET_EOWNERDEAD | ||
| 220 | +#define TARGET_EOWNERDEAD 165 /* Owner died */ | ||
| 221 | +#undef TARGET_ENOTRECOVERABLE | ||
| 222 | +#define TARGET_ENOTRECOVERABLE 166 /* State not recoverable */ | ||
| 223 | + | ||
| 224 | + | ||
| 225 | + | ||
| 23 | #define UNAME_MACHINE "mips" | 226 | #define UNAME_MACHINE "mips" |
linux-user/syscall.c
| @@ -181,10 +181,117 @@ extern int setresgid(gid_t, gid_t, gid_t); | @@ -181,10 +181,117 @@ extern int setresgid(gid_t, gid_t, gid_t); | ||
| 181 | extern int getresgid(gid_t *, gid_t *, gid_t *); | 181 | extern int getresgid(gid_t *, gid_t *, gid_t *); |
| 182 | extern int setgroups(int, gid_t *); | 182 | extern int setgroups(int, gid_t *); |
| 183 | 183 | ||
| 184 | +/* | ||
| 185 | + * This list is the union of errno values overidden in asm-<arch>/errno.h | ||
| 186 | + * minus the errnos that are not actually generic to all archs. | ||
| 187 | + */ | ||
| 188 | +static uint16_t host_to_target_errno_table[1200] = { | ||
| 189 | + [EIDRM] = TARGET_EIDRM, | ||
| 190 | + [ECHRNG] = TARGET_ECHRNG, | ||
| 191 | + [EL2NSYNC] = TARGET_EL2NSYNC, | ||
| 192 | + [EL3HLT] = TARGET_EL3HLT, | ||
| 193 | + [EL3RST] = TARGET_EL3RST, | ||
| 194 | + [ELNRNG] = TARGET_ELNRNG, | ||
| 195 | + [EUNATCH] = TARGET_EUNATCH, | ||
| 196 | + [ENOCSI] = TARGET_ENOCSI, | ||
| 197 | + [EL2HLT] = TARGET_EL2HLT, | ||
| 198 | + [EDEADLK] = TARGET_EDEADLK, | ||
| 199 | + [ENOLCK] = TARGET_ENOLCK, | ||
| 200 | + [EBADE] = TARGET_EBADE, | ||
| 201 | + [EBADR] = TARGET_EBADR, | ||
| 202 | + [EXFULL] = TARGET_EXFULL, | ||
| 203 | + [ENOANO] = TARGET_ENOANO, | ||
| 204 | + [EBADRQC] = TARGET_EBADRQC, | ||
| 205 | + [EBADSLT] = TARGET_EBADSLT, | ||
| 206 | + [EBFONT] = TARGET_EBFONT, | ||
| 207 | + [ENOSTR] = TARGET_ENOSTR, | ||
| 208 | + [ENODATA] = TARGET_ENODATA, | ||
| 209 | + [ETIME] = TARGET_ETIME, | ||
| 210 | + [ENOSR] = TARGET_ENOSR, | ||
| 211 | + [ENONET] = TARGET_ENONET, | ||
| 212 | + [ENOPKG] = TARGET_ENOPKG, | ||
| 213 | + [EREMOTE] = TARGET_EREMOTE, | ||
| 214 | + [ENOLINK] = TARGET_ENOLINK, | ||
| 215 | + [EADV] = TARGET_EADV, | ||
| 216 | + [ESRMNT] = TARGET_ESRMNT, | ||
| 217 | + [ECOMM] = TARGET_ECOMM, | ||
| 218 | + [EPROTO] = TARGET_EPROTO, | ||
| 219 | + [EDOTDOT] = TARGET_EDOTDOT, | ||
| 220 | + [EMULTIHOP] = TARGET_EMULTIHOP, | ||
| 221 | + [EBADMSG] = TARGET_EBADMSG, | ||
| 222 | + [ENAMETOOLONG] = TARGET_ENAMETOOLONG, | ||
| 223 | + [EOVERFLOW] = TARGET_EOVERFLOW, | ||
| 224 | + [ENOTUNIQ] = TARGET_ENOTUNIQ, | ||
| 225 | + [EBADFD] = TARGET_EBADFD, | ||
| 226 | + [EREMCHG] = TARGET_EREMCHG, | ||
| 227 | + [ELIBACC] = TARGET_ELIBACC, | ||
| 228 | + [ELIBBAD] = TARGET_ELIBBAD, | ||
| 229 | + [ELIBSCN] = TARGET_ELIBSCN, | ||
| 230 | + [ELIBMAX] = TARGET_ELIBMAX, | ||
| 231 | + [ELIBEXEC] = TARGET_ELIBEXEC, | ||
| 232 | + [EILSEQ] = TARGET_EILSEQ, | ||
| 233 | + [ENOSYS] = TARGET_ENOSYS, | ||
| 234 | + [ELOOP] = TARGET_ELOOP, | ||
| 235 | + [ERESTART] = TARGET_ERESTART, | ||
| 236 | + [ESTRPIPE] = TARGET_ESTRPIPE, | ||
| 237 | + [ENOTEMPTY] = TARGET_ENOTEMPTY, | ||
| 238 | + [EUSERS] = TARGET_EUSERS, | ||
| 239 | + [ENOTSOCK] = TARGET_ENOTSOCK, | ||
| 240 | + [EDESTADDRREQ] = TARGET_EDESTADDRREQ, | ||
| 241 | + [EMSGSIZE] = TARGET_EMSGSIZE, | ||
| 242 | + [EPROTOTYPE] = TARGET_EPROTOTYPE, | ||
| 243 | + [ENOPROTOOPT] = TARGET_ENOPROTOOPT, | ||
| 244 | + [EPROTONOSUPPORT] = TARGET_EPROTONOSUPPORT, | ||
| 245 | + [ESOCKTNOSUPPORT] = TARGET_ESOCKTNOSUPPORT, | ||
| 246 | + [EOPNOTSUPP] = TARGET_EOPNOTSUPP, | ||
| 247 | + [EPFNOSUPPORT] = TARGET_EPFNOSUPPORT, | ||
| 248 | + [EAFNOSUPPORT] = TARGET_EAFNOSUPPORT, | ||
| 249 | + [EADDRINUSE] = TARGET_EADDRINUSE, | ||
| 250 | + [EADDRNOTAVAIL] = TARGET_EADDRNOTAVAIL, | ||
| 251 | + [ENETDOWN] = TARGET_ENETDOWN, | ||
| 252 | + [ENETUNREACH] = TARGET_ENETUNREACH, | ||
| 253 | + [ENETRESET] = TARGET_ENETRESET, | ||
| 254 | + [ECONNABORTED] = TARGET_ECONNABORTED, | ||
| 255 | + [ECONNRESET] = TARGET_ECONNRESET, | ||
| 256 | + [ENOBUFS] = TARGET_ENOBUFS, | ||
| 257 | + [EISCONN] = TARGET_EISCONN, | ||
| 258 | + [ENOTCONN] = TARGET_ENOTCONN, | ||
| 259 | + [EUCLEAN] = TARGET_EUCLEAN, | ||
| 260 | + [ENOTNAM] = TARGET_ENOTNAM, | ||
| 261 | + [ENAVAIL] = TARGET_ENAVAIL, | ||
| 262 | + [EISNAM] = TARGET_EISNAM, | ||
| 263 | + [EREMOTEIO] = TARGET_EREMOTEIO, | ||
| 264 | + [ESHUTDOWN] = TARGET_ESHUTDOWN, | ||
| 265 | + [ETOOMANYREFS] = TARGET_ETOOMANYREFS, | ||
| 266 | + [ETIMEDOUT] = TARGET_ETIMEDOUT, | ||
| 267 | + [ECONNREFUSED] = TARGET_ECONNREFUSED, | ||
| 268 | + [EHOSTDOWN] = TARGET_EHOSTDOWN, | ||
| 269 | + [EHOSTUNREACH] = TARGET_EHOSTUNREACH, | ||
| 270 | + [EALREADY] = TARGET_EALREADY, | ||
| 271 | + [EINPROGRESS] = TARGET_EINPROGRESS, | ||
| 272 | + [ESTALE] = TARGET_ESTALE, | ||
| 273 | + [ECANCELED] = TARGET_ECANCELED, | ||
| 274 | + [ENOMEDIUM] = TARGET_ENOMEDIUM, | ||
| 275 | + [EMEDIUMTYPE] = TARGET_EMEDIUMTYPE, | ||
| 276 | + [ENOKEY] = TARGET_ENOKEY, | ||
| 277 | + [EKEYEXPIRED] = TARGET_EKEYEXPIRED, | ||
| 278 | + [EKEYREVOKED] = TARGET_EKEYREVOKED, | ||
| 279 | + [EKEYREJECTED] = TARGET_EKEYREJECTED, | ||
| 280 | + [EOWNERDEAD] = TARGET_EOWNERDEAD, | ||
| 281 | + [ENOTRECOVERABLE] = TARGET_ENOTRECOVERABLE, | ||
| 282 | + }; | ||
| 283 | + | ||
| 284 | +static inline int host_to_target_errno(int err) | ||
| 285 | +{ | ||
| 286 | + if(host_to_target_errno_table[err]) | ||
| 287 | + return host_to_target_errno_table[err]; | ||
| 288 | + return err; | ||
| 289 | +} | ||
| 290 | + | ||
| 184 | static inline long get_errno(long ret) | 291 | static inline long get_errno(long ret) |
| 185 | { | 292 | { |
| 186 | if (ret == -1) | 293 | if (ret == -1) |
| 187 | - return -errno; | 294 | + return -host_to_target_errno(errno); |
| 188 | else | 295 | else |
| 189 | return ret; | 296 | return ret; |
| 190 | } | 297 | } |