1 /* 2 * Copyright 2008 The Native Client Authors. All rights reserved. 3 * Use of this source code is governed by a BSD-style license that can be 4 * found in the LICENSE file. 5 */ 6 7 /* 8 * NaCl Service Runtime API. 9 */ 10 11 #ifndef NATIVE_CLIENT_SRC_TRUSTED_SERVICE_RUNTIME_INCLUDE_SYS_ERRNO_H_ 12 #define NATIVE_CLIENT_SRC_TRUSTED_SERVICE_RUNTIME_INCLUDE_SYS_ERRNO_H_ 13 14 #if defined(NACL_IN_TOOLCHAIN_HEADERS) 15 #include <sys/reent.h> 16 17 #ifdef __cplusplus 18 extern "C" { 19 #endif 20 21 #ifndef _REENT_ONLY 22 #define errno (*__errno()) 23 extern int *__errno _PARAMS ((void)); 24 #endif 25 26 /* Please don't use these variables directly. 27 * Use strerror instead. */ 28 extern __IMPORT _CONST char * _CONST _sys_errlist[]; 29 extern __IMPORT int _sys_nerr; 30 31 #define __errno_r(ptr) ((ptr)->_errno) 32 33 #ifdef __cplusplus 34 } 35 #endif 36 37 #endif /* defined(NACL_IN_TOOLCHAIN_HEADERS) */ 38 39 /* 40 * NOTE: when adding new errnos here, check 41 * service_runtime/nacl_host_desc_common.c and 42 * service_runtime/win/xlate_system_error.c. 43 */ 44 45 /* 46 * The errno values below 2048 here are the same as Linux's errno 47 * values. See Linux's asm-generic/errno-base.h and 48 * asm-generic/errno.h. 49 */ 50 51 #define NACL_ABI_EPERM 1 /* Operation not permitted */ 52 #define NACL_ABI_ENOENT 2 /* No such file or directory */ 53 #define NACL_ABI_ESRCH 3 /* No such process */ 54 #define NACL_ABI_EINTR 4 /* Interrupted system call */ 55 #define NACL_ABI_EIO 5 /* I/O error */ 56 #define NACL_ABI_ENXIO 6 /* No such device or address */ 57 #define NACL_ABI_E2BIG 7 /* Argument list too long */ 58 #define NACL_ABI_ENOEXEC 8 /* Exec format error */ 59 #define NACL_ABI_EBADF 9 /* Bad file number */ 60 #define NACL_ABI_ECHILD 10 /* No child processes */ 61 #define NACL_ABI_EAGAIN 11 /* Try again */ 62 #define NACL_ABI_ENOMEM 12 /* Out of memory */ 63 #define NACL_ABI_EACCES 13 /* Permission denied */ 64 #define NACL_ABI_EFAULT 14 /* Bad address */ 65 66 #define NACL_ABI_EBUSY 16 /* Device or resource busy */ 67 #define NACL_ABI_EEXIST 17 /* File exists */ 68 #define NACL_ABI_EXDEV 18 /* Cross-device link */ 69 #define NACL_ABI_ENODEV 19 /* No such device */ 70 #define NACL_ABI_ENOTDIR 20 /* Not a directory */ 71 #define NACL_ABI_EISDIR 21 /* Is a directory */ 72 #define NACL_ABI_EINVAL 22 /* Invalid argument */ 73 #define NACL_ABI_ENFILE 23 /* File table overflow */ 74 #define NACL_ABI_EMFILE 24 /* Too many open files */ 75 #define NACL_ABI_ENOTTY 25 /* Not a typewriter */ 76 77 #define NACL_ABI_EFBIG 27 /* File too large */ 78 #define NACL_ABI_ENOSPC 28 /* No space left on device */ 79 #define NACL_ABI_ESPIPE 29 /* Illegal seek */ 80 #define NACL_ABI_EROFS 30 /* Read-only file system */ 81 #define NACL_ABI_EMLINK 31 /* Too many links */ 82 #define NACL_ABI_EPIPE 32 /* Broken pipe */ 83 84 #define NACL_ABI_ENAMETOOLONG 36 /* File name too long */ 85 86 #define NACL_ABI_ENOSYS 38 /* Function not implemented */ 87 88 #define NACL_ABI_EDQUOT 122 /* Quota exceeded */ 89 90 /* 91 * Other definitions not needed for NaCl, but needed for newlib build. 92 */ 93 #define NACL_ABI_EDOM 33 /* Math arg out of domain of func */ 94 #define NACL_ABI_ERANGE 34 /* Math result not representable */ 95 #define NACL_ABI_EDEADLK 35 /* Deadlock condition */ 96 #define NACL_ABI_ENOLCK 37 /* No record locks available */ 97 #define NACL_ABI_ENOTEMPTY 39 /* Directory not empty */ 98 #define NACL_ABI_ELOOP 40 /* Too many symbolic links */ 99 #define NACL_ABI_ENOMSG 42 /* No message of desired type */ 100 #define NACL_ABI_EIDRM 43 /* Identifier removed */ 101 #define NACL_ABI_ECHRNG 44 /* Channel number out of range */ 102 #define NACL_ABI_EL2NSYNC 45 /* Level 2 not synchronized */ 103 #define NACL_ABI_EL3HLT 46 /* Level 3 halted */ 104 #define NACL_ABI_EL3RST 47 /* Level 3 reset */ 105 #define NACL_ABI_ELNRNG 48 /* Link number out of range */ 106 #define NACL_ABI_EUNATCH 49 /* Protocol driver not attached */ 107 #define NACL_ABI_ENOCSI 50 /* No CSI structure available */ 108 #define NACL_ABI_EL2HLT 51 /* Level 2 halted */ 109 #define NACL_ABI_EBADE 52 /* Invalid exchange */ 110 #define NACL_ABI_EBADR 53 /* Invalid request descriptor */ 111 #define NACL_ABI_EXFULL 54 /* Exchange full */ 112 #define NACL_ABI_ENOANO 55 /* No anode */ 113 #define NACL_ABI_EBADRQC 56 /* Invalid request code */ 114 #define NACL_ABI_EBADSLT 57 /* Invalid slot */ 115 #define NACL_ABI_EDEADLOCK NACL_ABI_EDEADLK /* File locking deadlock error */ 116 #define NACL_ABI_EBFONT 59 /* Bad font file fmt */ 117 #define NACL_ABI_ENOSTR 60 /* Device not a stream */ 118 #define NACL_ABI_ENODATA 61 /* No data (for no delay io) */ 119 #define NACL_ABI_ETIME 62 /* Timer expired */ 120 #define NACL_ABI_ENOSR 63 /* Out of streams resources */ 121 #define NACL_ABI_ENONET 64 /* Machine is not on the network */ 122 #define NACL_ABI_ENOPKG 65 /* Package not installed */ 123 #define NACL_ABI_EREMOTE 66 /* The object is remote */ 124 #define NACL_ABI_ENOLINK 67 /* The link has been severed */ 125 #define NACL_ABI_EADV 68 /* Advertise error */ 126 #define NACL_ABI_ESRMNT 69 /* Srmount error */ 127 #define NACL_ABI_ECOMM 70 /* Communication error on send */ 128 #define NACL_ABI_EPROTO 71 /* Protocol error */ 129 #define NACL_ABI_EMULTIHOP 72 /* Multihop attempted */ 130 #define NACL_ABI_EDOTDOT 73 /* Cross mount point (not really error) */ 131 #define NACL_ABI_EBADMSG 74 /* Trying to read unreadable message */ 132 #define NACL_ABI_EOVERFLOW 75 /* Value too large for defined data type */ 133 #define NACL_ABI_ENOTUNIQ 76 /* Given log. name not unique */ 134 #define NACL_ABI_EBADFD 77 /* f.d. invalid for this operation */ 135 #define NACL_ABI_EREMCHG 78 /* Remote address changed */ 136 #define NACL_ABI_ELIBACC 79 /* Can't access a needed shared lib */ 137 #define NACL_ABI_ELIBBAD 80 /* Accessing a corrupted shared lib */ 138 #define NACL_ABI_ELIBSCN 81 /* .lib section in a.out corrupted */ 139 #define NACL_ABI_ELIBMAX 82 /* Attempting to link in too many libs */ 140 #define NACL_ABI_ELIBEXEC 83 /* Attempting to exec a shared library */ 141 #define NACL_ABI_EILSEQ 84 142 #define NACL_ABI_EUSERS 87 143 #define NACL_ABI_ENOTSOCK 88 /* Socket operation on non-socket */ 144 #define NACL_ABI_EDESTADDRREQ 89 /* Destination address required */ 145 #define NACL_ABI_EMSGSIZE 90 /* Message too long */ 146 #define NACL_ABI_EPROTOTYPE 91 /* Protocol wrong type for socket */ 147 #define NACL_ABI_ENOPROTOOPT 92 /* Protocol not available */ 148 #define NACL_ABI_EPROTONOSUPPORT 93 /* Unknown protocol */ 149 #define NACL_ABI_ESOCKTNOSUPPORT 94 /* Socket type not supported */ 150 #define NACL_ABI_EOPNOTSUPP 95 /* Operation not supported on transport endpoint */ 151 #define NACL_ABI_EPFNOSUPPORT 96 /* Protocol family not supported */ 152 #define NACL_ABI_EAFNOSUPPORT 97 /* Address family not supported by protocol family */ 153 #define NACL_ABI_EADDRINUSE 98 /* Address already in use */ 154 #define NACL_ABI_EADDRNOTAVAIL 99 /* Address not available */ 155 #define NACL_ABI_ENETDOWN 100 /* Network interface is not configured */ 156 #define NACL_ABI_ENETUNREACH 101 /* Network is unreachable */ 157 #define NACL_ABI_ENETRESET 102 158 #define NACL_ABI_ECONNABORTED 103 /* Connection aborted */ 159 #define NACL_ABI_ECONNRESET 104 /* Connection reset by peer */ 160 #define NACL_ABI_ENOBUFS 105 /* No buffer space available */ 161 #define NACL_ABI_EISCONN 106 /* Socket is already connected */ 162 #define NACL_ABI_ENOTCONN 107 /* Socket is not connected */ 163 #define NACL_ABI_ESHUTDOWN 108 /* Can't send after socket shutdown */ 164 #define NACL_ABI_ETOOMANYREFS 109 165 #define NACL_ABI_ETIMEDOUT 110 /* Connection timed out */ 166 #define NACL_ABI_ECONNREFUSED 111 /* Connection refused */ 167 #define NACL_ABI_EHOSTDOWN 112 /* Host is down */ 168 #define NACL_ABI_EHOSTUNREACH 113 /* Host is unreachable */ 169 #define NACL_ABI_EALREADY 114 /* Socket already connected */ 170 #define NACL_ABI_EINPROGRESS 115 /* Connection already in progress */ 171 #define NACL_ABI_ESTALE 116 172 #define NACL_ABI_ENOTSUP NACL_ABI_EOPNOTSUPP /* Not supported */ 173 #define NACL_ABI_ENOMEDIUM 123 /* No medium (in tape drive) */ 174 #define NACL_ABI_ECANCELED 125 /* Operation canceled. */ 175 #define NACL_ABI_EOWNERDEAD 130 /* Owner died */ 176 #define NACL_ABI_ENOTRECOVERABLE 131 /* State not recoverable */ 177 178 179 /* 180 * Below are non-standard errno values which are not defined on Linux. 181 * Any new non-standard or NaCl-specific errno values should go here 182 * and have high (>=2048) values, so as not to conflict with errno 183 * values that Linux might add in the future. 184 */ 185 #define NACL_ABI_ELBIN 2048 /* Inode is remote (not really error) */ 186 #define NACL_ABI_EFTYPE 2049 /* Inappropriate file type or format */ 187 #define NACL_ABI_ENMFILE 2050 /* No more files */ 188 #define NACL_ABI_EPROCLIM 2051 189 #define NACL_ABI_ENOSHARE 2052 /* No such host or network path */ 190 #define NACL_ABI_ECASECLASH 2053 /* Filename exists with different case */ 191 192 193 /* From cygwin32. */ 194 #define NACL_ABI_EWOULDBLOCK NACL_ABI_EAGAIN /* Operation would block */ 195 196 #endif 197