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