// Copyright 2016 The Fuchsia Authors
// Copyright (c) 2013 Corey Tabaka
//
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file or at
// https://opensource.org/licenses/MIT

#pragma once

#include <zircon/compiler.h>

__BEGIN_CDECLS

extern int *__geterrno(void);

#define errno (*__geterrno())

#define EPERM 1     /* Not super-user */
#define ENOENT 2    /* No such file or directory */
#define ESRCH 3     /* No such process */
#define EINTR 4     /* Interrupted system call */
#define EIO 5       /* I/O error */
#define ENXIO 6     /* No such device or address */
#define E2BIG 7     /* Arg list too long */
#define ENOEXEC 8   /* Exec format error */
#define EBADF 9     /* Bad file number */
#define ECHILD 10   /* No children */
#define EAGAIN 11   /* No more processes */
#define ENOMEM 12   /* Not enough core */
#define EACCES 13   /* Permission denied */
#define EFAULT 14   /* Bad address */
#define ENOTBLK 15  /* Block device required */
#define EBUSY 16    /* Mount device busy */
#define EEXIST 17   /* File exists */
#define EXDEV 18    /* Cross-device link */
#define ENODEV 19   /* No such device */
#define ENOTDIR 20  /* Not a directory */
#define EISDIR 21   /* Is a directory */
#define EINVAL 22   /* Invalid argument */
#define ENFILE 23   /* Too many open files in system */
#define EMFILE 24   /* Too many open files */
#define ENOTTY 25   /* Not a typewriter */
#define ETXTBSY 26  /* Text file busy */
#define EFBIG 27    /* File too large */
#define ENOSPC 28   /* No space left on device */
#define ESPIPE 29   /* Illegal seek */
#define EROFS 30    /* Read only file system */
#define EMLINK 31   /* Too many links */
#define EPIPE 32    /* Broken pipe */
#define EDOM 33     /* Math arg out of domain of func */
#define ERANGE 34   /* Math result not representable */
#define ENOMSG 35   /* No message of desired type */
#define EIDRM 36    /* Identifier removed */
#define ECHRNG 37   /* Channel number out of range */
#define EL2NSYNC 38 /* Level 2 not synchronized */
#define EL3HLT 39   /* Level 3 halted */
#define EL3RST 40   /* Level 3 reset */
#define ELNRNG 41   /* Link number out of range */
#define EUNATCH 42  /* Protocol driver not attached */
#define ENOCSI 43   /* No CSI structure available */
#define EL2HLT 44   /* Level 2 halted */
#define EDEADLK 45  /* Deadlock condition */
#define ENOLCK 46   /* No record locks available */
#define EBADE 50    /* Invalid exchange */
#define EBADR 51    /* Invalid request descriptor */
#define EXFULL 52   /* Exchange full */
#define ENOANO 53   /* No anode */
#define EBADRQC 54  /* Invalid request code */
#define EBADSLT 55  /* Invalid slot */
#define EDEADLOCK 56    /* File locking deadlock error */
#define EBFONT 57   /* Bad font file fmt */
#define ENOSTR 60   /* Device not a stream */
#define ENODATA 61  /* No data (for no delay io) */
#define ETIME 62    /* Timer expired */
#define ENOSR 63    /* Out of streams resources */
#define ENONET 64   /* Machine is not on the network */
#define ENOPKG 65   /* Package not installed */
#define EREMOTE 66  /* The object is remote */
#define ENOLINK 67  /* The link has been severed */
#define EADV 68     /* Advertise error */
#define ESRMNT 69   /* Srmount error */
#define ECOMM 70    /* Communication error on send */
#define EPROTO 71   /* Protocol error */
#define EMULTIHOP 74    /* Multihop attempted */
#define ELBIN 75    /* Inode is remote (not really error) */
#define EDOTDOT 76  /* Cross mount point (not really error) */
#define EBADMSG 77  /* Trying to read unreadable message */
#define EFTYPE 79   /* Inappropriate file type or format */
#define ENOTUNIQ 80 /* Given log. name not unique */
#define EBADFD 81   /* f.d. invalid for this operation */
#define EREMCHG 82  /* Remote address changed */
#define ELIBACC 83  /* Can't access a needed shared lib */
#define ELIBBAD 84  /* Accessing a corrupted shared lib */
#define ELIBSCN 85  /* .lib section in a.out corrupted */
#define ELIBMAX 86  /* Attempting to link in too many libs */
#define ELIBEXEC 87 /* Attempting to exec a shared library */
#define ENOSYS 88   /* Function not implemented */
#define ENMFILE 89      /* No more files */
#define ENOTEMPTY 90    /* Directory not empty */
#define ENAMETOOLONG 91 /* File or path name too long */
#define ELOOP 92    /* Too many symbolic links */
#define EOPNOTSUPP 95   /* Operation not supported on transport endpoint */
#define EPFNOSUPPORT 96 /* Protocol family not supported */
#define ECONNRESET 104  /* Connection reset by peer */
#define ENOBUFS 105 /* No buffer space available */
#define EAFNOSUPPORT 106 /* Address family not supported by protocol family */
#define EPROTOTYPE 107  /* Protocol wrong type for socket */
#define ENOTSOCK 108    /* Socket operation on non-socket */
#define ENOPROTOOPT 109 /* Protocol not available */
#define ESHUTDOWN 110   /* Can't send after socket shutdown */
#define ECONNREFUSED 111    /* Connection refused */
#define EADDRINUSE 112      /* Address already in use */
#define ECONNABORTED 113    /* Connection aborted */
#define ENETUNREACH 114     /* Network is unreachable */
#define ENETDOWN 115        /* Network interface is not configured */
#define ETIMEDOUT 116       /* Connection timed out */
#define EHOSTDOWN 117       /* Host is down */
#define EHOSTUNREACH 118    /* Host is unreachable */
#define EINPROGRESS 119     /* Connection already in progress */
#define EALREADY 120        /* Socket already connected */
#define EDESTADDRREQ 121    /* Destination address required */
#define EMSGSIZE 122        /* Message too long */
#define EPROTONOSUPPORT 123 /* Unknown protocol */
#define ESOCKTNOSUPPORT 124 /* Socket type not supported */
#define EADDRNOTAVAIL 125   /* Address not available */
#define ENETRESET 126
#define EISCONN 127     /* Socket is already connected */
#define ENOTCONN 128        /* Socket is not connected */
#define ETOOMANYREFS 129
#define EPROCLIM 130
#define EUSERS 131
#define EDQUOT 132
#define ESTALE 133
#define ENOTSUP 134     /* Not supported */
#define ENOMEDIUM 135   /* No medium (in tape drive) */
#define ENOSHARE 136    /* No such host or network path */
#define ECASECLASH 137  /* Filename exists with different case */
#define EILSEQ 138
#define EOVERFLOW 139   /* Value too large for defined data type */

#define EWOULDBLOCK EAGAIN  /* Operation would block */

#define __ELASTERROR 2000   /* Users can add values starting here */

__END_CDECLS
