1 // -*- C++ -*- 2 //===----------------------------------------------------------------------===// 3 // 4 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 5 // See https://llvm.org/LICENSE.txt for license information. 6 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 7 // 8 //===----------------------------------------------------------------------===// 9 10 #ifndef _LIBCPP_ERRNO_H 11 #define _LIBCPP_ERRNO_H 12 13 /* 14 errno.h synopsis 15 16 Macros: 17 18 EDOM 19 EILSEQ // C99 20 ERANGE 21 errno 22 23 */ 24 25 #include <__config> 26 27 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) 28 # pragma GCC system_header 29 #endif 30 31 #if __has_include_next(<errno.h>) 32 # include_next <errno.h> 33 #endif 34 35 #ifdef __cplusplus 36 37 #if !defined(EOWNERDEAD) || !defined(ENOTRECOVERABLE) 38 39 #ifdef ELAST 40 41 static const int __elast1 = ELAST+1; 42 static const int __elast2 = ELAST+2; 43 44 #else 45 46 static const int __elast1 = 104; 47 static const int __elast2 = 105; 48 49 #endif 50 51 #ifdef ENOTRECOVERABLE 52 53 #define EOWNERDEAD __elast1 54 55 #ifdef ELAST 56 #undef ELAST 57 #define ELAST EOWNERDEAD 58 #endif 59 60 #elif defined(EOWNERDEAD) 61 62 #define ENOTRECOVERABLE __elast1 63 #ifdef ELAST 64 #undef ELAST 65 #define ELAST ENOTRECOVERABLE 66 #endif 67 68 #else // defined(EOWNERDEAD) 69 70 #define EOWNERDEAD __elast1 71 #define ENOTRECOVERABLE __elast2 72 #ifdef ELAST 73 #undef ELAST 74 #define ELAST ENOTRECOVERABLE 75 #endif 76 77 #endif // defined(EOWNERDEAD) 78 79 #endif // !defined(EOWNERDEAD) || !defined(ENOTRECOVERABLE) 80 81 // supply errno values likely to be missing, particularly on Windows 82 83 #ifndef EAFNOSUPPORT 84 #define EAFNOSUPPORT 9901 85 #endif 86 87 #ifndef EADDRINUSE 88 #define EADDRINUSE 9902 89 #endif 90 91 #ifndef EADDRNOTAVAIL 92 #define EADDRNOTAVAIL 9903 93 #endif 94 95 #ifndef EISCONN 96 #define EISCONN 9904 97 #endif 98 99 #ifndef EBADMSG 100 #define EBADMSG 9905 101 #endif 102 103 #ifndef ECONNABORTED 104 #define ECONNABORTED 9906 105 #endif 106 107 #ifndef EALREADY 108 #define EALREADY 9907 109 #endif 110 111 #ifndef ECONNREFUSED 112 #define ECONNREFUSED 9908 113 #endif 114 115 #ifndef ECONNRESET 116 #define ECONNRESET 9909 117 #endif 118 119 #ifndef EDESTADDRREQ 120 #define EDESTADDRREQ 9910 121 #endif 122 123 #ifndef EHOSTUNREACH 124 #define EHOSTUNREACH 9911 125 #endif 126 127 #ifndef EIDRM 128 #define EIDRM 9912 129 #endif 130 131 #ifndef EMSGSIZE 132 #define EMSGSIZE 9913 133 #endif 134 135 #ifndef ENETDOWN 136 #define ENETDOWN 9914 137 #endif 138 139 #ifndef ENETRESET 140 #define ENETRESET 9915 141 #endif 142 143 #ifndef ENETUNREACH 144 #define ENETUNREACH 9916 145 #endif 146 147 #ifndef ENOBUFS 148 #define ENOBUFS 9917 149 #endif 150 151 #ifndef ENOLINK 152 #define ENOLINK 9918 153 #endif 154 155 #ifndef ENODATA 156 #define ENODATA 9919 157 #endif 158 159 #ifndef ENOMSG 160 #define ENOMSG 9920 161 #endif 162 163 #ifndef ENOPROTOOPT 164 #define ENOPROTOOPT 9921 165 #endif 166 167 #ifndef ENOSR 168 #define ENOSR 9922 169 #endif 170 171 #ifndef ENOTSOCK 172 #define ENOTSOCK 9923 173 #endif 174 175 #ifndef ENOSTR 176 #define ENOSTR 9924 177 #endif 178 179 #ifndef ENOTCONN 180 #define ENOTCONN 9925 181 #endif 182 183 #ifndef ENOTSUP 184 #define ENOTSUP 9926 185 #endif 186 187 #ifndef ECANCELED 188 #define ECANCELED 9927 189 #endif 190 191 #ifndef EINPROGRESS 192 #define EINPROGRESS 9928 193 #endif 194 195 #ifndef EOPNOTSUPP 196 #define EOPNOTSUPP 9929 197 #endif 198 199 #ifndef EWOULDBLOCK 200 #define EWOULDBLOCK 9930 201 #endif 202 203 #ifndef EOWNERDEAD 204 #define EOWNERDEAD 9931 205 #endif 206 207 #ifndef EPROTO 208 #define EPROTO 9932 209 #endif 210 211 #ifndef EPROTONOSUPPORT 212 #define EPROTONOSUPPORT 9933 213 #endif 214 215 #ifndef ENOTRECOVERABLE 216 #define ENOTRECOVERABLE 9934 217 #endif 218 219 #ifndef ETIME 220 #define ETIME 9935 221 #endif 222 223 #ifndef ETXTBSY 224 #define ETXTBSY 9936 225 #endif 226 227 #ifndef ETIMEDOUT 228 #define ETIMEDOUT 9938 229 #endif 230 231 #ifndef ELOOP 232 #define ELOOP 9939 233 #endif 234 235 #ifndef EOVERFLOW 236 #define EOVERFLOW 9940 237 #endif 238 239 #ifndef EPROTOTYPE 240 #define EPROTOTYPE 9941 241 #endif 242 243 #ifndef ENOSYS 244 #define ENOSYS 9942 245 #endif 246 247 #ifndef EINVAL 248 #define EINVAL 9943 249 #endif 250 251 #ifndef ERANGE 252 #define ERANGE 9944 253 #endif 254 255 #ifndef EILSEQ 256 #define EILSEQ 9945 257 #endif 258 259 // Windows Mobile doesn't appear to define these: 260 261 #ifndef E2BIG 262 #define E2BIG 9946 263 #endif 264 265 #ifndef EDOM 266 #define EDOM 9947 267 #endif 268 269 #ifndef EFAULT 270 #define EFAULT 9948 271 #endif 272 273 #ifndef EBADF 274 #define EBADF 9949 275 #endif 276 277 #ifndef EPIPE 278 #define EPIPE 9950 279 #endif 280 281 #ifndef EXDEV 282 #define EXDEV 9951 283 #endif 284 285 #ifndef EBUSY 286 #define EBUSY 9952 287 #endif 288 289 #ifndef ENOTEMPTY 290 #define ENOTEMPTY 9953 291 #endif 292 293 #ifndef ENOEXEC 294 #define ENOEXEC 9954 295 #endif 296 297 #ifndef EEXIST 298 #define EEXIST 9955 299 #endif 300 301 #ifndef EFBIG 302 #define EFBIG 9956 303 #endif 304 305 #ifndef ENAMETOOLONG 306 #define ENAMETOOLONG 9957 307 #endif 308 309 #ifndef ENOTTY 310 #define ENOTTY 9958 311 #endif 312 313 #ifndef EINTR 314 #define EINTR 9959 315 #endif 316 317 #ifndef ESPIPE 318 #define ESPIPE 9960 319 #endif 320 321 #ifndef EIO 322 #define EIO 9961 323 #endif 324 325 #ifndef EISDIR 326 #define EISDIR 9962 327 #endif 328 329 #ifndef ECHILD 330 #define ECHILD 9963 331 #endif 332 333 #ifndef ENOLCK 334 #define ENOLCK 9964 335 #endif 336 337 #ifndef ENOSPC 338 #define ENOSPC 9965 339 #endif 340 341 #ifndef ENXIO 342 #define ENXIO 9966 343 #endif 344 345 #ifndef ENODEV 346 #define ENODEV 9967 347 #endif 348 349 #ifndef ENOENT 350 #define ENOENT 9968 351 #endif 352 353 #ifndef ESRCH 354 #define ESRCH 9969 355 #endif 356 357 #ifndef ENOTDIR 358 #define ENOTDIR 9970 359 #endif 360 361 #ifndef ENOMEM 362 #define ENOMEM 9971 363 #endif 364 365 #ifndef EPERM 366 #define EPERM 9972 367 #endif 368 369 #ifndef EACCES 370 #define EACCES 9973 371 #endif 372 373 #ifndef EROFS 374 #define EROFS 9974 375 #endif 376 377 #ifndef EDEADLK 378 #define EDEADLK 9975 379 #endif 380 381 #ifndef EAGAIN 382 #define EAGAIN 9976 383 #endif 384 385 #ifndef ENFILE 386 #define ENFILE 9977 387 #endif 388 389 #ifndef EMFILE 390 #define EMFILE 9978 391 #endif 392 393 #ifndef EMLINK 394 #define EMLINK 9979 395 #endif 396 397 #endif // __cplusplus 398 399 #endif // _LIBCPP_ERRNO_H 400