10b57cec5SDimitry Andric // -*- C++ -*- 2349cc55cSDimitry 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 31bdd1243dSDimitry Andric #if __has_include_next(<errno.h>) 320b57cec5SDimitry Andric # include_next <errno.h> 33bdd1243dSDimitry Andric #endif 340b57cec5SDimitry Andric 350b57cec5SDimitry Andric #ifdef __cplusplus 360b57cec5SDimitry Andric 37*1ff41cadSDimitry Andric # if !defined(EOWNERDEAD) || !defined(ENOTRECOVERABLE) 380b57cec5SDimitry Andric 39*1ff41cadSDimitry Andric # ifdef ELAST 400b57cec5SDimitry Andric 410b57cec5SDimitry Andric static const int __elast1 = ELAST + 1; 420b57cec5SDimitry Andric static const int __elast2 = ELAST + 2; 430b57cec5SDimitry Andric 440b57cec5SDimitry Andric # else 450b57cec5SDimitry Andric 460b57cec5SDimitry Andric static const int __elast1 = 104; 470b57cec5SDimitry Andric static const int __elast2 = 105; 480b57cec5SDimitry Andric 490b57cec5SDimitry Andric # endif 500b57cec5SDimitry Andric 51*1ff41cadSDimitry Andric # ifdef ENOTRECOVERABLE 520b57cec5SDimitry Andric 53*1ff41cadSDimitry Andric # define EOWNERDEAD __elast1 54*1ff41cadSDimitry Andric 55*1ff41cadSDimitry Andric # ifdef ELAST 560b57cec5SDimitry Andric # undef ELAST 570b57cec5SDimitry Andric # define ELAST EOWNERDEAD 580b57cec5SDimitry Andric # endif 590b57cec5SDimitry Andric 60*1ff41cadSDimitry Andric # elif defined(EOWNERDEAD) 610b57cec5SDimitry Andric 620b57cec5SDimitry Andric # define ENOTRECOVERABLE __elast1 63*1ff41cadSDimitry Andric # ifdef ELAST 640b57cec5SDimitry Andric # undef ELAST 650b57cec5SDimitry Andric # define ELAST ENOTRECOVERABLE 660b57cec5SDimitry Andric # endif 670b57cec5SDimitry Andric 68*1ff41cadSDimitry Andric # else // defined(EOWNERDEAD) 69*1ff41cadSDimitry Andric 70*1ff41cadSDimitry Andric # define EOWNERDEAD __elast1 71*1ff41cadSDimitry Andric # define ENOTRECOVERABLE __elast2 72*1ff41cadSDimitry Andric # ifdef ELAST 730b57cec5SDimitry Andric # undef ELAST 74*1ff41cadSDimitry Andric # define ELAST ENOTRECOVERABLE 750b57cec5SDimitry Andric # endif 760b57cec5SDimitry Andric 77*1ff41cadSDimitry Andric # endif // defined(EOWNERDEAD) 780b57cec5SDimitry Andric 79*1ff41cadSDimitry Andric # endif // !defined(EOWNERDEAD) || !defined(ENOTRECOVERABLE) 800b57cec5SDimitry Andric 810b57cec5SDimitry Andric // supply errno values likely to be missing, particularly on Windows 820b57cec5SDimitry Andric 830b57cec5SDimitry Andric # ifndef EAFNOSUPPORT 840b57cec5SDimitry Andric # define EAFNOSUPPORT 9901 850b57cec5SDimitry Andric # endif 860b57cec5SDimitry Andric 870b57cec5SDimitry Andric # ifndef EADDRINUSE 880b57cec5SDimitry Andric # define EADDRINUSE 9902 890b57cec5SDimitry Andric # endif 900b57cec5SDimitry Andric 910b57cec5SDimitry Andric # ifndef EADDRNOTAVAIL 920b57cec5SDimitry Andric # define EADDRNOTAVAIL 9903 930b57cec5SDimitry Andric # endif 940b57cec5SDimitry Andric 950b57cec5SDimitry Andric # ifndef EISCONN 960b57cec5SDimitry Andric # define EISCONN 9904 970b57cec5SDimitry Andric # endif 980b57cec5SDimitry Andric 990b57cec5SDimitry Andric # ifndef EBADMSG 1000b57cec5SDimitry Andric # define EBADMSG 9905 1010b57cec5SDimitry Andric # endif 1020b57cec5SDimitry Andric 1030b57cec5SDimitry Andric # ifndef ECONNABORTED 1040b57cec5SDimitry Andric # define ECONNABORTED 9906 1050b57cec5SDimitry Andric # endif 1060b57cec5SDimitry Andric 1070b57cec5SDimitry Andric # ifndef EALREADY 1080b57cec5SDimitry Andric # define EALREADY 9907 1090b57cec5SDimitry Andric # endif 1100b57cec5SDimitry Andric 1110b57cec5SDimitry Andric # ifndef ECONNREFUSED 1120b57cec5SDimitry Andric # define ECONNREFUSED 9908 1130b57cec5SDimitry Andric # endif 1140b57cec5SDimitry Andric 1150b57cec5SDimitry Andric # ifndef ECONNRESET 1160b57cec5SDimitry Andric # define ECONNRESET 9909 1170b57cec5SDimitry Andric # endif 1180b57cec5SDimitry Andric 1190b57cec5SDimitry Andric # ifndef EDESTADDRREQ 1200b57cec5SDimitry Andric # define EDESTADDRREQ 9910 1210b57cec5SDimitry Andric # endif 1220b57cec5SDimitry Andric 1230b57cec5SDimitry Andric # ifndef EHOSTUNREACH 1240b57cec5SDimitry Andric # define EHOSTUNREACH 9911 1250b57cec5SDimitry Andric # endif 1260b57cec5SDimitry Andric 1270b57cec5SDimitry Andric # ifndef EIDRM 1280b57cec5SDimitry Andric # define EIDRM 9912 1290b57cec5SDimitry Andric # endif 1300b57cec5SDimitry Andric 1310b57cec5SDimitry Andric # ifndef EMSGSIZE 1320b57cec5SDimitry Andric # define EMSGSIZE 9913 1330b57cec5SDimitry Andric # endif 1340b57cec5SDimitry Andric 1350b57cec5SDimitry Andric # ifndef ENETDOWN 1360b57cec5SDimitry Andric # define ENETDOWN 9914 1370b57cec5SDimitry Andric # endif 1380b57cec5SDimitry Andric 1390b57cec5SDimitry Andric # ifndef ENETRESET 1400b57cec5SDimitry Andric # define ENETRESET 9915 1410b57cec5SDimitry Andric # endif 1420b57cec5SDimitry Andric 1430b57cec5SDimitry Andric # ifndef ENETUNREACH 1440b57cec5SDimitry Andric # define ENETUNREACH 9916 1450b57cec5SDimitry Andric # endif 1460b57cec5SDimitry Andric 1470b57cec5SDimitry Andric # ifndef ENOBUFS 1480b57cec5SDimitry Andric # define ENOBUFS 9917 1490b57cec5SDimitry Andric # endif 1500b57cec5SDimitry Andric 1510b57cec5SDimitry Andric # ifndef ENOLINK 1520b57cec5SDimitry Andric # define ENOLINK 9918 1530b57cec5SDimitry Andric # endif 1540b57cec5SDimitry Andric 1550b57cec5SDimitry Andric # ifndef ENODATA 1560b57cec5SDimitry Andric # define ENODATA 9919 1570b57cec5SDimitry Andric # endif 1580b57cec5SDimitry Andric 1590b57cec5SDimitry Andric # ifndef ENOMSG 1600b57cec5SDimitry Andric # define ENOMSG 9920 1610b57cec5SDimitry Andric # endif 1620b57cec5SDimitry Andric 1630b57cec5SDimitry Andric # ifndef ENOPROTOOPT 1640b57cec5SDimitry Andric # define ENOPROTOOPT 9921 1650b57cec5SDimitry Andric # endif 1660b57cec5SDimitry Andric 1670b57cec5SDimitry Andric # ifndef ENOSR 1680b57cec5SDimitry Andric # define ENOSR 9922 1690b57cec5SDimitry Andric # endif 1700b57cec5SDimitry Andric 1710b57cec5SDimitry Andric # ifndef ENOTSOCK 1720b57cec5SDimitry Andric # define ENOTSOCK 9923 1730b57cec5SDimitry Andric # endif 1740b57cec5SDimitry Andric 1750b57cec5SDimitry Andric # ifndef ENOSTR 1760b57cec5SDimitry Andric # define ENOSTR 9924 1770b57cec5SDimitry Andric # endif 1780b57cec5SDimitry Andric 1790b57cec5SDimitry Andric # ifndef ENOTCONN 1800b57cec5SDimitry Andric # define ENOTCONN 9925 1810b57cec5SDimitry Andric # endif 1820b57cec5SDimitry Andric 1830b57cec5SDimitry Andric # ifndef ENOTSUP 1840b57cec5SDimitry Andric # define ENOTSUP 9926 1850b57cec5SDimitry Andric # endif 1860b57cec5SDimitry Andric 1870b57cec5SDimitry Andric # ifndef ECANCELED 1880b57cec5SDimitry Andric # define ECANCELED 9927 1890b57cec5SDimitry Andric # endif 1900b57cec5SDimitry Andric 1910b57cec5SDimitry Andric # ifndef EINPROGRESS 1920b57cec5SDimitry Andric # define EINPROGRESS 9928 1930b57cec5SDimitry Andric # endif 1940b57cec5SDimitry Andric 1950b57cec5SDimitry Andric # ifndef EOPNOTSUPP 1960b57cec5SDimitry Andric # define EOPNOTSUPP 9929 1970b57cec5SDimitry Andric # endif 1980b57cec5SDimitry Andric 1990b57cec5SDimitry Andric # ifndef EWOULDBLOCK 2000b57cec5SDimitry Andric # define EWOULDBLOCK 9930 2010b57cec5SDimitry Andric # endif 2020b57cec5SDimitry Andric 2030b57cec5SDimitry Andric # ifndef EOWNERDEAD 2040b57cec5SDimitry Andric # define EOWNERDEAD 9931 2050b57cec5SDimitry Andric # endif 2060b57cec5SDimitry Andric 2070b57cec5SDimitry Andric # ifndef EPROTO 2080b57cec5SDimitry Andric # define EPROTO 9932 2090b57cec5SDimitry Andric # endif 2100b57cec5SDimitry Andric 2110b57cec5SDimitry Andric # ifndef EPROTONOSUPPORT 2120b57cec5SDimitry Andric # define EPROTONOSUPPORT 9933 2130b57cec5SDimitry Andric # endif 2140b57cec5SDimitry Andric 2150b57cec5SDimitry Andric # ifndef ENOTRECOVERABLE 2160b57cec5SDimitry Andric # define ENOTRECOVERABLE 9934 2170b57cec5SDimitry Andric # endif 2180b57cec5SDimitry Andric 2190b57cec5SDimitry Andric # ifndef ETIME 2200b57cec5SDimitry Andric # define ETIME 9935 2210b57cec5SDimitry Andric # endif 2220b57cec5SDimitry Andric 2230b57cec5SDimitry Andric # ifndef ETXTBSY 2240b57cec5SDimitry Andric # define ETXTBSY 9936 2250b57cec5SDimitry Andric # endif 2260b57cec5SDimitry Andric 2270b57cec5SDimitry Andric # ifndef ETIMEDOUT 2280b57cec5SDimitry Andric # define ETIMEDOUT 9938 2290b57cec5SDimitry Andric # endif 2300b57cec5SDimitry Andric 2310b57cec5SDimitry Andric # ifndef ELOOP 2320b57cec5SDimitry Andric # define ELOOP 9939 2330b57cec5SDimitry Andric # endif 2340b57cec5SDimitry Andric 2350b57cec5SDimitry Andric # ifndef EOVERFLOW 2360b57cec5SDimitry Andric # define EOVERFLOW 9940 2370b57cec5SDimitry Andric # endif 2380b57cec5SDimitry Andric 2390b57cec5SDimitry Andric # ifndef EPROTOTYPE 2400b57cec5SDimitry Andric # define EPROTOTYPE 9941 2410b57cec5SDimitry Andric # endif 2420b57cec5SDimitry Andric 2430b57cec5SDimitry Andric # ifndef ENOSYS 2440b57cec5SDimitry Andric # define ENOSYS 9942 2450b57cec5SDimitry Andric # endif 2460b57cec5SDimitry Andric 2470b57cec5SDimitry Andric # ifndef EINVAL 2480b57cec5SDimitry Andric # define EINVAL 9943 2490b57cec5SDimitry Andric # endif 2500b57cec5SDimitry Andric 2510b57cec5SDimitry Andric # ifndef ERANGE 2520b57cec5SDimitry Andric # define ERANGE 9944 2530b57cec5SDimitry Andric # endif 2540b57cec5SDimitry Andric 2550b57cec5SDimitry Andric # ifndef EILSEQ 2560b57cec5SDimitry Andric # define EILSEQ 9945 2570b57cec5SDimitry Andric # endif 2580b57cec5SDimitry Andric 2590b57cec5SDimitry Andric // Windows Mobile doesn't appear to define these: 2600b57cec5SDimitry Andric 2610b57cec5SDimitry Andric # ifndef E2BIG 2620b57cec5SDimitry Andric # define E2BIG 9946 2630b57cec5SDimitry Andric # endif 2640b57cec5SDimitry Andric 2650b57cec5SDimitry Andric # ifndef EDOM 2660b57cec5SDimitry Andric # define EDOM 9947 2670b57cec5SDimitry Andric # endif 2680b57cec5SDimitry Andric 2690b57cec5SDimitry Andric # ifndef EFAULT 2700b57cec5SDimitry Andric # define EFAULT 9948 2710b57cec5SDimitry Andric # endif 2720b57cec5SDimitry Andric 2730b57cec5SDimitry Andric # ifndef EBADF 2740b57cec5SDimitry Andric # define EBADF 9949 2750b57cec5SDimitry Andric # endif 2760b57cec5SDimitry Andric 2770b57cec5SDimitry Andric # ifndef EPIPE 2780b57cec5SDimitry Andric # define EPIPE 9950 2790b57cec5SDimitry Andric # endif 2800b57cec5SDimitry Andric 2810b57cec5SDimitry Andric # ifndef EXDEV 2820b57cec5SDimitry Andric # define EXDEV 9951 2830b57cec5SDimitry Andric # endif 2840b57cec5SDimitry Andric 2850b57cec5SDimitry Andric # ifndef EBUSY 2860b57cec5SDimitry Andric # define EBUSY 9952 2870b57cec5SDimitry Andric # endif 2880b57cec5SDimitry Andric 2890b57cec5SDimitry Andric # ifndef ENOTEMPTY 2900b57cec5SDimitry Andric # define ENOTEMPTY 9953 2910b57cec5SDimitry Andric # endif 2920b57cec5SDimitry Andric 2930b57cec5SDimitry Andric # ifndef ENOEXEC 2940b57cec5SDimitry Andric # define ENOEXEC 9954 2950b57cec5SDimitry Andric # endif 2960b57cec5SDimitry Andric 2970b57cec5SDimitry Andric # ifndef EEXIST 2980b57cec5SDimitry Andric # define EEXIST 9955 2990b57cec5SDimitry Andric # endif 3000b57cec5SDimitry Andric 3010b57cec5SDimitry Andric # ifndef EFBIG 3020b57cec5SDimitry Andric # define EFBIG 9956 3030b57cec5SDimitry Andric # endif 3040b57cec5SDimitry Andric 3050b57cec5SDimitry Andric # ifndef ENAMETOOLONG 3060b57cec5SDimitry Andric # define ENAMETOOLONG 9957 3070b57cec5SDimitry Andric # endif 3080b57cec5SDimitry Andric 3090b57cec5SDimitry Andric # ifndef ENOTTY 3100b57cec5SDimitry Andric # define ENOTTY 9958 3110b57cec5SDimitry Andric # endif 3120b57cec5SDimitry Andric 3130b57cec5SDimitry Andric # ifndef EINTR 3140b57cec5SDimitry Andric # define EINTR 9959 3150b57cec5SDimitry Andric # endif 3160b57cec5SDimitry Andric 3170b57cec5SDimitry Andric # ifndef ESPIPE 3180b57cec5SDimitry Andric # define ESPIPE 9960 3190b57cec5SDimitry Andric # endif 3200b57cec5SDimitry Andric 3210b57cec5SDimitry Andric # ifndef EIO 3220b57cec5SDimitry Andric # define EIO 9961 3230b57cec5SDimitry Andric # endif 3240b57cec5SDimitry Andric 3250b57cec5SDimitry Andric # ifndef EISDIR 3260b57cec5SDimitry Andric # define EISDIR 9962 3270b57cec5SDimitry Andric # endif 3280b57cec5SDimitry Andric 3290b57cec5SDimitry Andric # ifndef ECHILD 3300b57cec5SDimitry Andric # define ECHILD 9963 3310b57cec5SDimitry Andric # endif 3320b57cec5SDimitry Andric 3330b57cec5SDimitry Andric # ifndef ENOLCK 3340b57cec5SDimitry Andric # define ENOLCK 9964 3350b57cec5SDimitry Andric # endif 3360b57cec5SDimitry Andric 3370b57cec5SDimitry Andric # ifndef ENOSPC 3380b57cec5SDimitry Andric # define ENOSPC 9965 3390b57cec5SDimitry Andric # endif 3400b57cec5SDimitry Andric 3410b57cec5SDimitry Andric # ifndef ENXIO 3420b57cec5SDimitry Andric # define ENXIO 9966 3430b57cec5SDimitry Andric # endif 3440b57cec5SDimitry Andric 3450b57cec5SDimitry Andric # ifndef ENODEV 3460b57cec5SDimitry Andric # define ENODEV 9967 3470b57cec5SDimitry Andric # endif 3480b57cec5SDimitry Andric 3490b57cec5SDimitry Andric # ifndef ENOENT 3500b57cec5SDimitry Andric # define ENOENT 9968 3510b57cec5SDimitry Andric # endif 3520b57cec5SDimitry Andric 3530b57cec5SDimitry Andric # ifndef ESRCH 3540b57cec5SDimitry Andric # define ESRCH 9969 3550b57cec5SDimitry Andric # endif 3560b57cec5SDimitry Andric 3570b57cec5SDimitry Andric # ifndef ENOTDIR 3580b57cec5SDimitry Andric # define ENOTDIR 9970 3590b57cec5SDimitry Andric # endif 3600b57cec5SDimitry Andric 3610b57cec5SDimitry Andric # ifndef ENOMEM 3620b57cec5SDimitry Andric # define ENOMEM 9971 3630b57cec5SDimitry Andric # endif 3640b57cec5SDimitry Andric 3650b57cec5SDimitry Andric # ifndef EPERM 3660b57cec5SDimitry Andric # define EPERM 9972 3670b57cec5SDimitry Andric # endif 3680b57cec5SDimitry Andric 3690b57cec5SDimitry Andric # ifndef EACCES 3700b57cec5SDimitry Andric # define EACCES 9973 3710b57cec5SDimitry Andric # endif 3720b57cec5SDimitry Andric 3730b57cec5SDimitry Andric # ifndef EROFS 3740b57cec5SDimitry Andric # define EROFS 9974 3750b57cec5SDimitry Andric # endif 3760b57cec5SDimitry Andric 3770b57cec5SDimitry Andric # ifndef EDEADLK 3780b57cec5SDimitry Andric # define EDEADLK 9975 3790b57cec5SDimitry Andric # endif 3800b57cec5SDimitry Andric 3810b57cec5SDimitry Andric # ifndef EAGAIN 3820b57cec5SDimitry Andric # define EAGAIN 9976 3830b57cec5SDimitry Andric # endif 3840b57cec5SDimitry Andric 3850b57cec5SDimitry Andric # ifndef ENFILE 3860b57cec5SDimitry Andric # define ENFILE 9977 3870b57cec5SDimitry Andric # endif 3880b57cec5SDimitry Andric 3890b57cec5SDimitry Andric # ifndef EMFILE 3900b57cec5SDimitry Andric # define EMFILE 9978 3910b57cec5SDimitry Andric # endif 3920b57cec5SDimitry Andric 3930b57cec5SDimitry Andric # ifndef EMLINK 3940b57cec5SDimitry Andric # define EMLINK 9979 3950b57cec5SDimitry Andric # endif 3960b57cec5SDimitry Andric 3970b57cec5SDimitry Andric #endif // __cplusplus 3980b57cec5SDimitry Andric 3990b57cec5SDimitry Andric #endif // _LIBCPP_ERRNO_H 400