xref: /freebsd/contrib/llvm-project/libcxx/include/errno.h (revision cb14a3fe5122c879eae1fb480ed7ce82a699ddb6)
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