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