/** @file
  The header <errno.h> defines several macros, all relating to the reporting of
  error conditions.

  The ISO/IEC 9899 specification requires that these be macros.

  The macros expand to integral constant expressions
  with distinct nonzero values, suitable for use in #if preprocessing
  directives; the variable errno which expands to a modifiable lvalue that has type int,
  the value of which is set to a positive error number by several library
  functions; and the variable EFIerrno which is an extension allowing the return status
  of the underlying UEFI functions to be returned.

  The value of errno and EFIerrno is zero at program startup.  On program startup, errno
  is initialized to zero but is never set to zero by
  any library function.  The value of errno may be set to a non-zero value by
  a library function call whether or not there is an error, provided the use
  of errno is not documented in the description of the function in
  the governing standard: ISO/IEC 9899:1990 with Amendment 1 or ISO/IEC 9899:199409.

  EFIerrno, like errno, should only be checked if it is known that the preceeding function call
  called a UEFI function.  Functions in which UEFI functions are called dependent upon context
  or parameter values should guarantee that EFIerrno is set to zero by default, or to the status
  value returned by any UEFI functions which are called.

  All macro definitions in this list must begin with the letter 'E'
  and be followed by a digit or an uppercase letter.

  Copyright (c) 2010 - 2014, Intel Corporation. All rights reserved.<BR>
  This program and the accompanying materials are licensed and made available under
  the terms and conditions of the BSD License that accompanies this distribution.
  The full text of the license may be found at
  http://opensource.org/licenses/bsd-license.

  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
#ifndef _ERRNO_H
#define _ERRNO_H
#include  <sys/EfiCdefs.h>
#include  <sys/errno.h>

extern  int             errno;
extern  RETURN_STATUS   EFIerrno;

// Define error number in terms of the ENUM in <sys/errno.h>

#define ERESTART          -1                      /* restart syscall */
#define ESUCCESS          __ESUCCESS              /* No Problems */

#define EMINERRORVAL      __EMINERRORVAL          /*  1   The lowest valid error value */

#define EPERM             __EPERM                 /*  1   Operation not permitted */
#define ENOENT            __ENOENT                /*  2   No such file or directory */
#define ESRCH             __ESRCH                 /*  3   No such process */
#define EINTR             __EINTR                 /*  4   Interrupted system call */
#define EIO               __EIO                   /*  5   Input/output error */
#define ENXIO             __ENXIO                 /*  6   Device not configured */
#define E2BIG             __E2BIG                 /*  7   Argument list too long */
#define ENOEXEC           __ENOEXEC               /*  8   Exec format error */
#define EBADF             __EBADF                 /*  9   Bad file descriptor */
#define ECHILD            __ECHILD                /* 10   No child processes */
#define EDEADLK           __EDEADLK               /* 11   Resource deadlock avoided */
#define ENOMEM            __ENOMEM                /* 12   Cannot allocate memory */
#define EACCES            __EACCES                /* 13   Permission denied */
#define EFAULT            __EFAULT                /* 14   Bad address */
#define ENOTBLK           __ENOTBLK               /* 15   Block device required */
#define EBUSY             __EBUSY                 /* 16   Device busy */
#define EEXIST            __EEXIST                /* 17   File exists */
#define EXDEV             __EXDEV                 /* 18   Cross-device link */
#define ENODEV            __ENODEV                /* 19   Operation not supported by device */
#define ENOTDIR           __ENOTDIR               /* 20   Not a directory */
#define EISDIR            __EISDIR                /* 21   Is a directory */
#define EINVAL            __EINVAL                /* 22   Invalid argument */
#define ENFILE            __ENFILE                /* 23   Too many open files in system */
#define EMFILE            __EMFILE                /* 24   Too many open file descriptors */
#define ENOTTY            __ENOTTY                /* 25   Inappropriate ioctl for device */
#define ETXTBSY           __ETXTBSY               /* 26   Text file busy */
#define EFBIG             __EFBIG                 /* 27   File too large */
#define ENOSPC            __ENOSPC                /* 28   No space left on device */
#define ESPIPE            __ESPIPE                /* 29   Illegal seek */
#define EROFS             __EROFS                 /* 30   Read-only filesystem */
#define EMLINK            __EMLINK                /* 31   Too many links */
#define EPIPE             __EPIPE                 /* 32   Broken pipe */

/* math software -- these are the only two values required by the C Standard */
#define EDOM              __EDOM                  /* 33   Numerical argument out of domain */
#define ERANGE            __ERANGE                /* 34   Result too large */

/* non-blocking and interrupt i/o */
#define EAGAIN            __EAGAIN                /* 35   Resource temporarily unavailable */
#define EWOULDBLOCK       __EWOULDBLOCK           /* 35   Operation would block */
#define EINPROGRESS       __EINPROGRESS           /* 36   Operation now in progress */
#define EALREADY          __EALREADY              /* 37   Operation already in progress */

/* ipc/network software -- argument errors */
#define ENOTSOCK          __ENOTSOCK              /* 38   Socket operation on non-socket */
#define EDESTADDRREQ      __EDESTADDRREQ          /* 39   Destination address required */
#define EMSGSIZE          __EMSGSIZE              /* 40   Message too long */
#define EPROTOTYPE        __EPROTOTYPE            /* 41   Protocol wrong type for socket */
#define ENOPROTOOPT       __ENOPROTOOPT           /* 42   Protocol not available */
#define EPROTONOSUPPORT   __EPROTONOSUPPORT       /* 43   Protocol not supported */
#define ESOCKTNOSUPPORT   __ESOCKTNOSUPPORT       /* 44   Socket type not supported */
#define EOPNOTSUPP        __EOPNOTSUPP            /* 45   Operation not supported */
#define ENOTSUP           __ENOTSUP               /* 45   Operation not supported */
#define EPFNOSUPPORT      __EPFNOSUPPORT          /* 46   Protocol family not supported */
#define EAFNOSUPPORT      __EAFNOSUPPORT          /* 47   Address family not supported by protocol family */
#define EADDRINUSE        __EADDRINUSE            /* 48   Address already in use */
#define EADDRNOTAVAIL     __EADDRNOTAVAIL         /* 49   Can't assign requested address */

/* ipc/network software -- operational errors */
#define ENETDOWN          __ENETDOWN              /* 50   Network is down */
#define ENETUNREACH       __ENETUNREACH           /* 51   Network is unreachable */
#define ENETRESET         __ENETRESET             /* 52   Network dropped connection on reset */
#define ECONNABORTED      __ECONNABORTED          /* 53   Software caused connection abort */
#define ECONNRESET        __ECONNRESET            /* 54   Connection reset by peer */
#define ENOBUFS           __ENOBUFS               /* 55   No buffer space available */
#define EISCONN           __EISCONN               /* 56   Socket is already connected */
#define ENOTCONN          __ENOTCONN              /* 57   Socket is not connected */
#define ESHUTDOWN         __ESHUTDOWN             /* 58   Can't send after socket shutdown */
#define ETOOMANYREFS      __ETOOMANYREFS          /* 59   Too many references: can't splice */
#define ETIMEDOUT         __ETIMEDOUT             /* 60   Operation timed out */
#define ECONNREFUSED      __ECONNREFUSED          /* 61   Connection refused */
#define ELOOP             __ELOOP                 /* 62   Too many levels of symbolic links */
#define ENAMETOOLONG      __ENAMETOOLONG          /* 63   File name too long */
#define EHOSTDOWN         __EHOSTDOWN             /* 64   Host is down */
#define EHOSTUNREACH      __EHOSTUNREACH          /* 65   No route to host */

#define ENOTEMPTY         __ENOTEMPTY             /* 66   Directory not empty */

/* quotas, etc. */
#define EPROCLIM          __EPROCLIM              /* 67   Too many processes */
#define EUSERS            __EUSERS                /* 68   Too many users */
#define EDQUOT            __EDQUOT                /* 69   Disc quota exceeded */

/* Network File System */
#define ESTALE            __ESTALE                /* 70   Stale NFS file handle */
#define EREMOTE           __EREMOTE               /* 71   Too many levels of remote in path */
#define EBADRPC           __EBADRPC               /* 72   RPC struct is bad */
#define ERPCMISMATCH      __ERPCMISMATCH          /* 73   RPC version wrong */
#define EPROGUNAVAIL      __EPROGUNAVAIL          /* 74   RPC prog. not avail */
#define EPROGMISMATCH     __EPROGMISMATCH         /* 75   Program version wrong */
#define EPROCUNAVAIL      __EPROCUNAVAIL          /* 76   Bad procedure for program */
#define ENOLCK            __ENOLCK                /* 77   No locks available */
#define ENOSYS            __ENOSYS                /* 78   Function not implemented */
#define EFTYPE            __EFTYPE                /* 79   Inappropriate file type or format */
#define EAUTH             __EAUTH                 /* 80   Authentication error */
#define ENEEDAUTH         __ENEEDAUTH             /* 81   Need authenticator */
#define EIDRM             __EIDRM                 /* 82   Identifier removed */
#define ENOMSG            __ENOMSG                /* 83   No message of desired type */
#define EOVERFLOW         __EOVERFLOW             /* 84   Value too large to be stored in data type */
#define EILSEQ            __EILSEQ                /* 85   Illegal byte sequence */
#define ENOTHING_1        __ENOTHING_1            /* 86   Place Holder */
#define ECANCELED         __ECANCELED             /* 87   Operation canceled */

#define EBADMSG           __EBADMSG               /* 88   Bad message */
#define ENODATA           __ENODATA               /* 89   No message available */
#define ENOSR             __ENOSR                 /* 90   No STREAM resources */
#define ENOSTR            __ENOSTR                /* 91   Not a STREAM */
#define ETIME             __ETIME                 /* 92   STREAM ioctl timeout */

#define ENOATTR           __ENOATTR               /* 93   Attribute not found */

#define EDOOFUS           __EDOOFUS               /* 94   Programming error */

#define EMULTIHOP         __EMULTIHOP             /* 95   Multihop attempted */
#define ENOLINK           __ENOLINK               /* 96   Link has been severed */
#define EPROTO            __EPROTO                /* 97   Protocol error */

#define EBUFSIZE          __EBUFSIZE              /* 98   Buffer too small to hold result */

#define EMAXERRORVAL      __EMAXERRORVAL          /* One more than the highest defined error value. */

#endif  /* _ERRNO_H */
