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