10b57cec5SDimitry Andric // -*- C++ -*- 2*349cc55cSDimitry Andric //===----------------------------------------------------------------------===// 30b57cec5SDimitry Andric // 40b57cec5SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 50b57cec5SDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 60b57cec5SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 70b57cec5SDimitry Andric // 80b57cec5SDimitry Andric //===----------------------------------------------------------------------===// 90b57cec5SDimitry Andric 100b57cec5SDimitry Andric #ifndef _LIBCPP_ERRNO_H 110b57cec5SDimitry Andric #define _LIBCPP_ERRNO_H 120b57cec5SDimitry Andric 130b57cec5SDimitry Andric /* 140b57cec5SDimitry Andric errno.h synopsis 150b57cec5SDimitry Andric 160b57cec5SDimitry Andric Macros: 170b57cec5SDimitry Andric 180b57cec5SDimitry Andric EDOM 190b57cec5SDimitry Andric EILSEQ // C99 200b57cec5SDimitry Andric ERANGE 210b57cec5SDimitry Andric errno 220b57cec5SDimitry Andric 230b57cec5SDimitry Andric */ 240b57cec5SDimitry Andric 250b57cec5SDimitry Andric #include <__config> 260b57cec5SDimitry Andric 270b57cec5SDimitry Andric #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) 280b57cec5SDimitry Andric #pragma GCC system_header 290b57cec5SDimitry Andric #endif 300b57cec5SDimitry Andric 310b57cec5SDimitry Andric #include_next <errno.h> 320b57cec5SDimitry Andric 330b57cec5SDimitry Andric #ifdef __cplusplus 340b57cec5SDimitry Andric 350b57cec5SDimitry Andric #if !defined(EOWNERDEAD) || !defined(ENOTRECOVERABLE) || !defined(EINTEGRITY) 360b57cec5SDimitry Andric 370b57cec5SDimitry Andric #if defined(ELAST) 380b57cec5SDimitry Andric 390b57cec5SDimitry Andric static const int __elast1 = ELAST+1; 400b57cec5SDimitry Andric static const int __elast2 = ELAST+2; 410b57cec5SDimitry Andric static const int __elast3 = ELAST+3; 420b57cec5SDimitry Andric 430b57cec5SDimitry Andric #else 440b57cec5SDimitry Andric 450b57cec5SDimitry Andric static const int __elast1 = 104; 460b57cec5SDimitry Andric static const int __elast2 = 105; 470b57cec5SDimitry Andric static const int __elast3 = 106; 480b57cec5SDimitry Andric 490b57cec5SDimitry Andric #endif 500b57cec5SDimitry Andric 510b57cec5SDimitry Andric #if !defined(EOWNERDEAD) && !defined(ENOTRECOVERABLE) && !defined(EINTEGRITY) 520b57cec5SDimitry Andric #define ENOTRECOVERABLE __elast1 530b57cec5SDimitry Andric #define EOWNERDEAD __elast2 540b57cec5SDimitry Andric #define EINTEGRITY __elast3 550b57cec5SDimitry Andric #if defined(ELAST) 560b57cec5SDimitry Andric #undef ELAST 570b57cec5SDimitry Andric #define ELAST EINTEGRITY 580b57cec5SDimitry Andric #endif 590b57cec5SDimitry Andric 600b57cec5SDimitry Andric #elif !defined(EOWNERDEAD) && !defined(ENOTRECOVERABLE) && defined(EINTEGRITY) 610b57cec5SDimitry Andric #define ENOTRECOVERABLE __elast1 620b57cec5SDimitry Andric #define EOWNERDEAD __elast2 630b57cec5SDimitry Andric #if defined(ELAST) 640b57cec5SDimitry Andric #undef ELAST 650b57cec5SDimitry Andric #define ELAST EOWNERDEAD 660b57cec5SDimitry Andric #endif 670b57cec5SDimitry Andric 680b57cec5SDimitry Andric #elif !defined(EOWNERDEAD) && defined(ENOTRECOVERABLE) && !defined(EINTEGRITY) 690b57cec5SDimitry Andric #define EOWNERDEAD __elast1 700b57cec5SDimitry Andric #define EINTEGRITY __elast2 710b57cec5SDimitry Andric #if defined(ELAST) 720b57cec5SDimitry Andric #undef ELAST 730b57cec5SDimitry Andric #define ELAST EINTEGRITY 740b57cec5SDimitry Andric #endif 750b57cec5SDimitry Andric 760b57cec5SDimitry Andric #elif !defined(EOWNERDEAD) && defined(ENOTRECOVERABLE) && defined(EINTEGRITY) 770b57cec5SDimitry Andric #define EOWNERDEAD __elast1 780b57cec5SDimitry Andric #if defined(ELAST) 790b57cec5SDimitry Andric #undef ELAST 800b57cec5SDimitry Andric #define ELAST EOWNERDEAD 810b57cec5SDimitry Andric #endif 820b57cec5SDimitry Andric 830b57cec5SDimitry Andric #elif defined(EOWNERDEAD) && !defined(ENOTRECOVERABLE) && !defined(EINTEGRITY) 840b57cec5SDimitry Andric #define ENOTRECOVERABLE __elast1 850b57cec5SDimitry Andric #define EINTEGRITY __elast2 860b57cec5SDimitry Andric #if defined(ELAST) 870b57cec5SDimitry Andric #undef ELAST 880b57cec5SDimitry Andric #define ELAST EINTEGRITY 890b57cec5SDimitry Andric #endif 900b57cec5SDimitry Andric 910b57cec5SDimitry Andric #elif defined(EOWNERDEAD) && !defined(ENOTRECOVERABLE) && defined(EINTEGRITY) 920b57cec5SDimitry Andric #define ENOTRECOVERABLE __elast1 930b57cec5SDimitry Andric #if defined(ELAST) 940b57cec5SDimitry Andric #undef ELAST 950b57cec5SDimitry Andric #define ELAST ENOTRECOVERABLE 960b57cec5SDimitry Andric #endif 970b57cec5SDimitry Andric 980b57cec5SDimitry Andric #elif defined(EOWNERDEAD) && defined(ENOTRECOVERABLE) && !defined(EINTEGRITY) 990b57cec5SDimitry Andric #define EINTEGRITY __elast1 1000b57cec5SDimitry Andric #if defined(ELAST) 1010b57cec5SDimitry Andric #undef ELAST 1020b57cec5SDimitry Andric #define ELAST EINTEGRITY 1030b57cec5SDimitry Andric #endif 1040b57cec5SDimitry Andric 1050b57cec5SDimitry Andric #endif // !defined(OWNERDEAD) && !defined(NOTRECOVERABLE) && !defined(INTEGRITY) 1060b57cec5SDimitry Andric 1070b57cec5SDimitry Andric #endif // !defined(OWNERDEAD) || !defined(NOTRECOVERABLE) || !defined(INTEGRITY) 1080b57cec5SDimitry Andric 1090b57cec5SDimitry Andric // supply errno values likely to be missing, particularly on Windows 1100b57cec5SDimitry Andric 1110b57cec5SDimitry Andric #ifndef EAFNOSUPPORT 1120b57cec5SDimitry Andric #define EAFNOSUPPORT 9901 1130b57cec5SDimitry Andric #endif 1140b57cec5SDimitry Andric 1150b57cec5SDimitry Andric #ifndef EADDRINUSE 1160b57cec5SDimitry Andric #define EADDRINUSE 9902 1170b57cec5SDimitry Andric #endif 1180b57cec5SDimitry Andric 1190b57cec5SDimitry Andric #ifndef EADDRNOTAVAIL 1200b57cec5SDimitry Andric #define EADDRNOTAVAIL 9903 1210b57cec5SDimitry Andric #endif 1220b57cec5SDimitry Andric 1230b57cec5SDimitry Andric #ifndef EISCONN 1240b57cec5SDimitry Andric #define EISCONN 9904 1250b57cec5SDimitry Andric #endif 1260b57cec5SDimitry Andric 1270b57cec5SDimitry Andric #ifndef EBADMSG 1280b57cec5SDimitry Andric #define EBADMSG 9905 1290b57cec5SDimitry Andric #endif 1300b57cec5SDimitry Andric 1310b57cec5SDimitry Andric #ifndef ECONNABORTED 1320b57cec5SDimitry Andric #define ECONNABORTED 9906 1330b57cec5SDimitry Andric #endif 1340b57cec5SDimitry Andric 1350b57cec5SDimitry Andric #ifndef EALREADY 1360b57cec5SDimitry Andric #define EALREADY 9907 1370b57cec5SDimitry Andric #endif 1380b57cec5SDimitry Andric 1390b57cec5SDimitry Andric #ifndef ECONNREFUSED 1400b57cec5SDimitry Andric #define ECONNREFUSED 9908 1410b57cec5SDimitry Andric #endif 1420b57cec5SDimitry Andric 1430b57cec5SDimitry Andric #ifndef ECONNRESET 1440b57cec5SDimitry Andric #define ECONNRESET 9909 1450b57cec5SDimitry Andric #endif 1460b57cec5SDimitry Andric 1470b57cec5SDimitry Andric #ifndef EDESTADDRREQ 1480b57cec5SDimitry Andric #define EDESTADDRREQ 9910 1490b57cec5SDimitry Andric #endif 1500b57cec5SDimitry Andric 1510b57cec5SDimitry Andric #ifndef EHOSTUNREACH 1520b57cec5SDimitry Andric #define EHOSTUNREACH 9911 1530b57cec5SDimitry Andric #endif 1540b57cec5SDimitry Andric 1550b57cec5SDimitry Andric #ifndef EIDRM 1560b57cec5SDimitry Andric #define EIDRM 9912 1570b57cec5SDimitry Andric #endif 1580b57cec5SDimitry Andric 1590b57cec5SDimitry Andric #ifndef EMSGSIZE 1600b57cec5SDimitry Andric #define EMSGSIZE 9913 1610b57cec5SDimitry Andric #endif 1620b57cec5SDimitry Andric 1630b57cec5SDimitry Andric #ifndef ENETDOWN 1640b57cec5SDimitry Andric #define ENETDOWN 9914 1650b57cec5SDimitry Andric #endif 1660b57cec5SDimitry Andric 1670b57cec5SDimitry Andric #ifndef ENETRESET 1680b57cec5SDimitry Andric #define ENETRESET 9915 1690b57cec5SDimitry Andric #endif 1700b57cec5SDimitry Andric 1710b57cec5SDimitry Andric #ifndef ENETUNREACH 1720b57cec5SDimitry Andric #define ENETUNREACH 9916 1730b57cec5SDimitry Andric #endif 1740b57cec5SDimitry Andric 1750b57cec5SDimitry Andric #ifndef ENOBUFS 1760b57cec5SDimitry Andric #define ENOBUFS 9917 1770b57cec5SDimitry Andric #endif 1780b57cec5SDimitry Andric 1790b57cec5SDimitry Andric #ifndef ENOLINK 1800b57cec5SDimitry Andric #define ENOLINK 9918 1810b57cec5SDimitry Andric #endif 1820b57cec5SDimitry Andric 1830b57cec5SDimitry Andric #ifndef ENODATA 1840b57cec5SDimitry Andric #define ENODATA 9919 1850b57cec5SDimitry Andric #endif 1860b57cec5SDimitry Andric 1870b57cec5SDimitry Andric #ifndef ENOMSG 1880b57cec5SDimitry Andric #define ENOMSG 9920 1890b57cec5SDimitry Andric #endif 1900b57cec5SDimitry Andric 1910b57cec5SDimitry Andric #ifndef ENOPROTOOPT 1920b57cec5SDimitry Andric #define ENOPROTOOPT 9921 1930b57cec5SDimitry Andric #endif 1940b57cec5SDimitry Andric 1950b57cec5SDimitry Andric #ifndef ENOSR 1960b57cec5SDimitry Andric #define ENOSR 9922 1970b57cec5SDimitry Andric #endif 1980b57cec5SDimitry Andric 1990b57cec5SDimitry Andric #ifndef ENOTSOCK 2000b57cec5SDimitry Andric #define ENOTSOCK 9923 2010b57cec5SDimitry Andric #endif 2020b57cec5SDimitry Andric 2030b57cec5SDimitry Andric #ifndef ENOSTR 2040b57cec5SDimitry Andric #define ENOSTR 9924 2050b57cec5SDimitry Andric #endif 2060b57cec5SDimitry Andric 2070b57cec5SDimitry Andric #ifndef ENOTCONN 2080b57cec5SDimitry Andric #define ENOTCONN 9925 2090b57cec5SDimitry Andric #endif 2100b57cec5SDimitry Andric 2110b57cec5SDimitry Andric #ifndef ENOTSUP 2120b57cec5SDimitry Andric #define ENOTSUP 9926 2130b57cec5SDimitry Andric #endif 2140b57cec5SDimitry Andric 2150b57cec5SDimitry Andric #ifndef ECANCELED 2160b57cec5SDimitry Andric #define ECANCELED 9927 2170b57cec5SDimitry Andric #endif 2180b57cec5SDimitry Andric 2190b57cec5SDimitry Andric #ifndef EINPROGRESS 2200b57cec5SDimitry Andric #define EINPROGRESS 9928 2210b57cec5SDimitry Andric #endif 2220b57cec5SDimitry Andric 2230b57cec5SDimitry Andric #ifndef EOPNOTSUPP 2240b57cec5SDimitry Andric #define EOPNOTSUPP 9929 2250b57cec5SDimitry Andric #endif 2260b57cec5SDimitry Andric 2270b57cec5SDimitry Andric #ifndef EWOULDBLOCK 2280b57cec5SDimitry Andric #define EWOULDBLOCK 9930 2290b57cec5SDimitry Andric #endif 2300b57cec5SDimitry Andric 2310b57cec5SDimitry Andric #ifndef EOWNERDEAD 2320b57cec5SDimitry Andric #define EOWNERDEAD 9931 2330b57cec5SDimitry Andric #endif 2340b57cec5SDimitry Andric 2350b57cec5SDimitry Andric #ifndef EPROTO 2360b57cec5SDimitry Andric #define EPROTO 9932 2370b57cec5SDimitry Andric #endif 2380b57cec5SDimitry Andric 2390b57cec5SDimitry Andric #ifndef EPROTONOSUPPORT 2400b57cec5SDimitry Andric #define EPROTONOSUPPORT 9933 2410b57cec5SDimitry Andric #endif 2420b57cec5SDimitry Andric 2430b57cec5SDimitry Andric #ifndef ENOTRECOVERABLE 2440b57cec5SDimitry Andric #define ENOTRECOVERABLE 9934 2450b57cec5SDimitry Andric #endif 2460b57cec5SDimitry Andric 2470b57cec5SDimitry Andric #ifndef ETIME 2480b57cec5SDimitry Andric #define ETIME 9935 2490b57cec5SDimitry Andric #endif 2500b57cec5SDimitry Andric 2510b57cec5SDimitry Andric #ifndef ETXTBSY 2520b57cec5SDimitry Andric #define ETXTBSY 9936 2530b57cec5SDimitry Andric #endif 2540b57cec5SDimitry Andric 2550b57cec5SDimitry Andric #ifndef ETIMEDOUT 2560b57cec5SDimitry Andric #define ETIMEDOUT 9938 2570b57cec5SDimitry Andric #endif 2580b57cec5SDimitry Andric 2590b57cec5SDimitry Andric #ifndef ELOOP 2600b57cec5SDimitry Andric #define ELOOP 9939 2610b57cec5SDimitry Andric #endif 2620b57cec5SDimitry Andric 2630b57cec5SDimitry Andric #ifndef EOVERFLOW 2640b57cec5SDimitry Andric #define EOVERFLOW 9940 2650b57cec5SDimitry Andric #endif 2660b57cec5SDimitry Andric 2670b57cec5SDimitry Andric #ifndef EPROTOTYPE 2680b57cec5SDimitry Andric #define EPROTOTYPE 9941 2690b57cec5SDimitry Andric #endif 2700b57cec5SDimitry Andric 2710b57cec5SDimitry Andric #ifndef ENOSYS 2720b57cec5SDimitry Andric #define ENOSYS 9942 2730b57cec5SDimitry Andric #endif 2740b57cec5SDimitry Andric 2750b57cec5SDimitry Andric #ifndef EINVAL 2760b57cec5SDimitry Andric #define EINVAL 9943 2770b57cec5SDimitry Andric #endif 2780b57cec5SDimitry Andric 2790b57cec5SDimitry Andric #ifndef ERANGE 2800b57cec5SDimitry Andric #define ERANGE 9944 2810b57cec5SDimitry Andric #endif 2820b57cec5SDimitry Andric 2830b57cec5SDimitry Andric #ifndef EILSEQ 2840b57cec5SDimitry Andric #define EILSEQ 9945 2850b57cec5SDimitry Andric #endif 2860b57cec5SDimitry Andric 2870b57cec5SDimitry Andric // Windows Mobile doesn't appear to define these: 2880b57cec5SDimitry Andric 2890b57cec5SDimitry Andric #ifndef E2BIG 2900b57cec5SDimitry Andric #define E2BIG 9946 2910b57cec5SDimitry Andric #endif 2920b57cec5SDimitry Andric 2930b57cec5SDimitry Andric #ifndef EDOM 2940b57cec5SDimitry Andric #define EDOM 9947 2950b57cec5SDimitry Andric #endif 2960b57cec5SDimitry Andric 2970b57cec5SDimitry Andric #ifndef EFAULT 2980b57cec5SDimitry Andric #define EFAULT 9948 2990b57cec5SDimitry Andric #endif 3000b57cec5SDimitry Andric 3010b57cec5SDimitry Andric #ifndef EBADF 3020b57cec5SDimitry Andric #define EBADF 9949 3030b57cec5SDimitry Andric #endif 3040b57cec5SDimitry Andric 3050b57cec5SDimitry Andric #ifndef EPIPE 3060b57cec5SDimitry Andric #define EPIPE 9950 3070b57cec5SDimitry Andric #endif 3080b57cec5SDimitry Andric 3090b57cec5SDimitry Andric #ifndef EXDEV 3100b57cec5SDimitry Andric #define EXDEV 9951 3110b57cec5SDimitry Andric #endif 3120b57cec5SDimitry Andric 3130b57cec5SDimitry Andric #ifndef EBUSY 3140b57cec5SDimitry Andric #define EBUSY 9952 3150b57cec5SDimitry Andric #endif 3160b57cec5SDimitry Andric 3170b57cec5SDimitry Andric #ifndef ENOTEMPTY 3180b57cec5SDimitry Andric #define ENOTEMPTY 9953 3190b57cec5SDimitry Andric #endif 3200b57cec5SDimitry Andric 3210b57cec5SDimitry Andric #ifndef ENOEXEC 3220b57cec5SDimitry Andric #define ENOEXEC 9954 3230b57cec5SDimitry Andric #endif 3240b57cec5SDimitry Andric 3250b57cec5SDimitry Andric #ifndef EEXIST 3260b57cec5SDimitry Andric #define EEXIST 9955 3270b57cec5SDimitry Andric #endif 3280b57cec5SDimitry Andric 3290b57cec5SDimitry Andric #ifndef EFBIG 3300b57cec5SDimitry Andric #define EFBIG 9956 3310b57cec5SDimitry Andric #endif 3320b57cec5SDimitry Andric 3330b57cec5SDimitry Andric #ifndef ENAMETOOLONG 3340b57cec5SDimitry Andric #define ENAMETOOLONG 9957 3350b57cec5SDimitry Andric #endif 3360b57cec5SDimitry Andric 3370b57cec5SDimitry Andric #ifndef ENOTTY 3380b57cec5SDimitry Andric #define ENOTTY 9958 3390b57cec5SDimitry Andric #endif 3400b57cec5SDimitry Andric 3410b57cec5SDimitry Andric #ifndef EINTR 3420b57cec5SDimitry Andric #define EINTR 9959 3430b57cec5SDimitry Andric #endif 3440b57cec5SDimitry Andric 3450b57cec5SDimitry Andric #ifndef ESPIPE 3460b57cec5SDimitry Andric #define ESPIPE 9960 3470b57cec5SDimitry Andric #endif 3480b57cec5SDimitry Andric 3490b57cec5SDimitry Andric #ifndef EIO 3500b57cec5SDimitry Andric #define EIO 9961 3510b57cec5SDimitry Andric #endif 3520b57cec5SDimitry Andric 3530b57cec5SDimitry Andric #ifndef EISDIR 3540b57cec5SDimitry Andric #define EISDIR 9962 3550b57cec5SDimitry Andric #endif 3560b57cec5SDimitry Andric 3570b57cec5SDimitry Andric #ifndef ECHILD 3580b57cec5SDimitry Andric #define ECHILD 9963 3590b57cec5SDimitry Andric #endif 3600b57cec5SDimitry Andric 3610b57cec5SDimitry Andric #ifndef ENOLCK 3620b57cec5SDimitry Andric #define ENOLCK 9964 3630b57cec5SDimitry Andric #endif 3640b57cec5SDimitry Andric 3650b57cec5SDimitry Andric #ifndef ENOSPC 3660b57cec5SDimitry Andric #define ENOSPC 9965 3670b57cec5SDimitry Andric #endif 3680b57cec5SDimitry Andric 3690b57cec5SDimitry Andric #ifndef ENXIO 3700b57cec5SDimitry Andric #define ENXIO 9966 3710b57cec5SDimitry Andric #endif 3720b57cec5SDimitry Andric 3730b57cec5SDimitry Andric #ifndef ENODEV 3740b57cec5SDimitry Andric #define ENODEV 9967 3750b57cec5SDimitry Andric #endif 3760b57cec5SDimitry Andric 3770b57cec5SDimitry Andric #ifndef ENOENT 3780b57cec5SDimitry Andric #define ENOENT 9968 3790b57cec5SDimitry Andric #endif 3800b57cec5SDimitry Andric 3810b57cec5SDimitry Andric #ifndef ESRCH 3820b57cec5SDimitry Andric #define ESRCH 9969 3830b57cec5SDimitry Andric #endif 3840b57cec5SDimitry Andric 3850b57cec5SDimitry Andric #ifndef ENOTDIR 3860b57cec5SDimitry Andric #define ENOTDIR 9970 3870b57cec5SDimitry Andric #endif 3880b57cec5SDimitry Andric 3890b57cec5SDimitry Andric #ifndef ENOMEM 3900b57cec5SDimitry Andric #define ENOMEM 9971 3910b57cec5SDimitry Andric #endif 3920b57cec5SDimitry Andric 3930b57cec5SDimitry Andric #ifndef EPERM 3940b57cec5SDimitry Andric #define EPERM 9972 3950b57cec5SDimitry Andric #endif 3960b57cec5SDimitry Andric 3970b57cec5SDimitry Andric #ifndef EACCES 3980b57cec5SDimitry Andric #define EACCES 9973 3990b57cec5SDimitry Andric #endif 4000b57cec5SDimitry Andric 4010b57cec5SDimitry Andric #ifndef EROFS 4020b57cec5SDimitry Andric #define EROFS 9974 4030b57cec5SDimitry Andric #endif 4040b57cec5SDimitry Andric 4050b57cec5SDimitry Andric #ifndef EDEADLK 4060b57cec5SDimitry Andric #define EDEADLK 9975 4070b57cec5SDimitry Andric #endif 4080b57cec5SDimitry Andric 4090b57cec5SDimitry Andric #ifndef EAGAIN 4100b57cec5SDimitry Andric #define EAGAIN 9976 4110b57cec5SDimitry Andric #endif 4120b57cec5SDimitry Andric 4130b57cec5SDimitry Andric #ifndef ENFILE 4140b57cec5SDimitry Andric #define ENFILE 9977 4150b57cec5SDimitry Andric #endif 4160b57cec5SDimitry Andric 4170b57cec5SDimitry Andric #ifndef EMFILE 4180b57cec5SDimitry Andric #define EMFILE 9978 4190b57cec5SDimitry Andric #endif 4200b57cec5SDimitry Andric 4210b57cec5SDimitry Andric #ifndef EMLINK 4220b57cec5SDimitry Andric #define EMLINK 9979 4230b57cec5SDimitry Andric #endif 4240b57cec5SDimitry Andric 4250b57cec5SDimitry Andric #ifndef EINTEGRITY 4260b57cec5SDimitry Andric #define EINTEGRITY 9980 4270b57cec5SDimitry Andric #endif 4280b57cec5SDimitry Andric 4290b57cec5SDimitry Andric #endif // __cplusplus 4300b57cec5SDimitry Andric 4310b57cec5SDimitry Andric #endif // _LIBCPP_ERRNO_H 432