/* $Id: errno.h,v 1.3 2002/03/22 01:26:28 hyperion Exp $
 */
/*
 * errno.h
 *
 * system error numbers. Conforming to the Single UNIX(r) Specification
 * Version 2, System Interface & Headers Issue 5
 *
 * This file is part of the ReactOS Operating System.
 *
 * Contributors:
 *  Created by KJK::Hyperion <noog@libero.it>
 *
 *  THIS SOFTWARE IS NOT COPYRIGHTED
 *
 *  This source code is offered for use in the public domain. You may
 *  use, modify or distribute it freely.
 *
 *  This code is distributed in the hope that it will be useful but
 *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
 *  DISCLAMED. This includes but is not limited to warranties of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 *
 */
#ifndef __ERRNO_H_INCLUDED__
#define __ERRNO_H_INCLUDED__

/* INCLUDES */

/* OBJECTS */

/* TYPES */

/* CONSTANTS */
/* errors from 0 to 42 are the same as in Microsoft POSIX */
#define EZERO           (  0) /* No error. */
#define EPERM           (  1) /* Operation not permitted. */
#define ENOENT          (  2) /* No such file or directory. */
#define ESRCH           (  3) /* No such process. */
#define EINTR           (  4) /* Interrupted function. */
#define EIO             (  5) /* I/O error. */
#define ENXIO           (  6) /* No such device or address. */
#define E2BIG           (  7) /* Argument list too long. */
#define ENOEXEC         (  8) /* Executable file format error. */
#define EBADF           (  9) /* Bad file descriptor. */
#define ECHILD          ( 10) /* No child processes. */
#define EAGAIN          ( 11) /* Resource unavailable, try again */
#define ENOMEM          ( 12) /* Not enough space. */
#define EACCES          ( 13) /* Permission denied. */
#define EFAULT          ( 14) /* Bad address. */
#define ENOTBLK         ( 15) /* Reserved.	*/
#define EBUSY           ( 16) /* Device or resource 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 files open in system. */
#define EMFILE          ( 24) /* Too many open files. */
#define ENOTTY          ( 25) /* Inappropriate I/O control operation. */
#define ETXTBSY         ( 26) /* Text file busy. */
#define EFBIG           ( 27) /* File too large. */
#define ENOSPC          ( 28) /* No space left on device. */
#define ESPIPE          ( 29) /* Invalid seek. */
#define EROFS           ( 30) /* Read-only file system. */
#define EMLINK          ( 31) /* Too many links. */
#define EPIPE           ( 32) /* Broken pipe. */
#define EDOM            ( 33) /* Mathematics argument out of domain of function. */
#define ERANGE          ( 34) /* Result too large. */
#define EUCLEAN	        ( 35) /* Reserved. */
#define EDEADLK         ( 36) /* Resource deadlock would occur. */
#define UNKNOWN         ( 37) /* Reserved. */
#define ENAMETOOLONG    ( 38) /* Filename too long. */
#define ENOLCK          ( 39) /* No locks available. */
#define ENOSYS          ( 40) /* Function not supported. */
#define ENOTEMPTY       ( 41) /* Directory not empty. */
#define EILSEQ          ( 42) /* Illegal byte sequence. */
/* from this point, constants are in no particular order */
#define ENODATA         ( 44) /* No message is available on the STREAM head read queue. */
#define ENOSR           ( 45) /* No STREAM resources. */
#define ENOSTR          ( 46) /* Not a STREAM. */
#define ECANCELED       ( 47) /* Operation canceled. */
#define ENOBUFS         ( 48) /* No buffer space available. */
#define EOVERFLOW       ( 49) /* Value too large to be stored in data type. */
#define ENOTSUP         ( 50) /* Not supported. */
#define EADDRINUSE      ( 51) /* Address in use. */
#define EADDRNOTAVAIL   ( 52) /* Address not available. */
#define EAFNOSUPPORT    ( 53) /* Address family not supported. */
#define ECONNABORTED    ( 54) /* Connection aborted. */
#define ECONNREFUSED    ( 55) /* Connection refused. */
#define ECONNRESET      ( 56) /* Connection reset. */
#define EALREADY        ( 57) /* Connection already in progress. */
#define EDESTADDRREQ    ( 58) /* Destination address required. */
#define EHOSTUNREACH    ( 59) /* Host is unreachable. */
#define EISCONN         ( 60) /* Socket is connected. */
#define ENETDOWN        ( 61) /* Network is down. */
#define ENETUNREACH     ( 62) /* Network unreachable. */
#define ENOPROTOOPT     ( 63) /* Protocol not available. */
#define ENOTCONN        ( 64) /* The socket is not connected. */
#define ENOTSOCK        ( 65) /* Not a socket. */
#define EPROTO          ( 66) /* Protocol error. */
#define EPROTONOSUPPORT ( 67) /* Protocol not supported. */
#define EPROTOTYPE      ( 68) /* Socket type not supported. */
#define EOPNOTSUPP      ( 69) /* Operation not supported on socket. */
#define ETIMEDOUT       ( 70) /* Connection timed out. */
#define EINPROGRESS     ( 71) /* Operation in progress. */
#define EBADMSG         ( 72) /* Bad message. */
#define EMSGSIZE        ( 73) /* Message too large. */
#define ENOMSG          ( 74) /* No message of the desired type. */
#define EDQUOT          ( 75) /* Reserved. */
#define EIDRM           ( 76) /* Identifier removed. */
#define ELOOP           ( 77) /* Too many levels of symbolic links. */
#define EMULTIHOP       ( 78) /* Reserved. */
#define ENOLINK         ( 79) /* Reserved. */
#define ESTALE          ( 80) /* Reserved. */
#define ETIME           ( 81) /* Streamioctl() timeout. */
#define EWOULDBLOCK     ( 82) /* Operation would block */

#define EDEADLOCK	EDEADLK /* Resource deadlock avoided		*/

/* PROTOTYPES */
int * __PdxGetThreadErrNum(void); /* returns a pointer to the current thread's errno */

/* MACROS */
#define errno (*__PdxGetThreadErrNum())

#endif /* __ERRNO_H_INCLUDED__ */

/* EOF */

