The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/include/errno.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /* The <errno.h> header defines the numbers of the various errors that can
    2  * occur during program execution.  They are visible to user programs and 
    3  * should be small positive integers.  However, they are also used within 
    4  * MINIX, where they must be negative.  For example, the READ system call is 
    5  * executed internally by calling do_read().  This function returns either a 
    6  * (negative) error number or a (positive) number of bytes actually read.
    7  *
    8  * To solve the problem of having the error numbers be negative inside the
    9  * the system and positive outside, the following mechanism is used.  All the
   10  * definitions are are the form:
   11  *
   12  *      #define EPERM           (_SIGN 1)
   13  *
   14  * If the macro _SYSTEM is defined, then  _SIGN is set to "-", otherwise it is
   15  * set to "".  Thus when compiling the operating system, the  macro _SYSTEM
   16  * will be defined, setting EPERM to (- 1), whereas when when this
   17  * file is included in an ordinary user program, EPERM has the value ( 1).
   18  */
   19 
   20 #ifndef _ERRNO_H                /* check if <errno.h> is already included */
   21 #define _ERRNO_H                /* it is not included; note that fact */
   22 
   23 /* Now define _SIGN as "" or "-" depending on _SYSTEM. */
   24 #ifdef _SYSTEM
   25 #   define _SIGN         -
   26 #   define OK            0
   27 #else
   28 #   define _SIGN         
   29 #endif
   30 
   31 extern int errno;                 /* place where the error numbers go */
   32 
   33 /* Here are the numerical values of the error numbers. */
   34 #define _NERROR               70  /* number of errors */  
   35 
   36 #define EGENERIC      (_SIGN 99)  /* generic error */
   37 #define EPERM         (_SIGN  1)  /* operation not permitted */
   38 #define ENOENT        (_SIGN  2)  /* no such file or directory */
   39 #define ESRCH         (_SIGN  3)  /* no such process */
   40 #define EINTR         (_SIGN  4)  /* interrupted function call */
   41 #define EIO           (_SIGN  5)  /* input/output error */
   42 #define ENXIO         (_SIGN  6)  /* no such device or address */
   43 #define E2BIG         (_SIGN  7)  /* arg list too long */
   44 #define ENOEXEC       (_SIGN  8)  /* exec format error */
   45 #define EBADF         (_SIGN  9)  /* bad file descriptor */
   46 #define ECHILD        (_SIGN 10)  /* no child process */
   47 #define EAGAIN        (_SIGN 11)  /* resource temporarily unavailable */
   48 #define ENOMEM        (_SIGN 12)  /* not enough space */
   49 #define EACCES        (_SIGN 13)  /* permission denied */
   50 #define EFAULT        (_SIGN 14)  /* bad address */
   51 #define ENOTBLK       (_SIGN 15)  /* Extension: not a block special file */
   52 #define EBUSY         (_SIGN 16)  /* resource busy */
   53 #define EEXIST        (_SIGN 17)  /* file exists */
   54 #define EXDEV         (_SIGN 18)  /* improper link */
   55 #define ENODEV        (_SIGN 19)  /* no such device */
   56 #define ENOTDIR       (_SIGN 20)  /* not a directory */
   57 #define EISDIR        (_SIGN 21)  /* is a directory */
   58 #define EINVAL        (_SIGN 22)  /* invalid argument */
   59 #define ENFILE        (_SIGN 23)  /* too many open files in system */
   60 #define EMFILE        (_SIGN 24)  /* too many open files */
   61 #define ENOTTY        (_SIGN 25)  /* inappropriate I/O control operation */
   62 #define ETXTBSY       (_SIGN 26)  /* no longer used */
   63 #define EFBIG         (_SIGN 27)  /* file too large */
   64 #define ENOSPC        (_SIGN 28)  /* no space left on device */
   65 #define ESPIPE        (_SIGN 29)  /* invalid seek */
   66 #define EROFS         (_SIGN 30)  /* read-only file system */
   67 #define EMLINK        (_SIGN 31)  /* too many links */
   68 #define EPIPE         (_SIGN 32)  /* broken pipe */
   69 #define EDOM          (_SIGN 33)  /* domain error       (from ANSI C std) */
   70 #define ERANGE        (_SIGN 34)  /* result too large   (from ANSI C std) */
   71 #define EDEADLK       (_SIGN 35)  /* resource deadlock avoided */
   72 #define ENAMETOOLONG  (_SIGN 36)  /* file name too long */
   73 #define ENOLCK        (_SIGN 37)  /* no locks available */
   74 #define ENOSYS        (_SIGN 38)  /* function not implemented */
   75 #define ENOTEMPTY     (_SIGN 39)  /* directory not empty */
   76 
   77 /* The following errors relate to networking. */
   78 #define EPACKSIZE     (_SIGN 50)  /* invalid packet size for some protocol */
   79 #define EOUTOFBUFS    (_SIGN 51)  /* not enough buffers left */
   80 #define EBADIOCTL     (_SIGN 52)  /* illegal ioctl for device */
   81 #define EBADMODE      (_SIGN 53)  /* badmode in ioctl */
   82 #define EWOULDBLOCK   (_SIGN 54)
   83 #define EBADDEST      (_SIGN 55)  /* not a valid destination address */
   84 #define EDSTNOTRCH    (_SIGN 56)  /* destination not reachable */
   85 #define EISCONN       (_SIGN 57)  /* all ready connected */
   86 #define EADDRINUSE    (_SIGN 58)  /* address in use */
   87 #define ECONNREFUSED  (_SIGN 59)  /* connection refused */
   88 #define ECONNRESET    (_SIGN 60)  /* connection reset */
   89 #define ETIMEDOUT     (_SIGN 61)  /* connection timed out */
   90 #define EURG          (_SIGN 62)  /* urgent data present */
   91 #define ENOURG        (_SIGN 63)  /* no urgent data present */
   92 #define ENOTCONN      (_SIGN 64)  /* no connection (yet or anymore) */
   93 #define ESHUTDOWN     (_SIGN 65)  /* a write call to a shutdown connection */
   94 #define ENOCONN       (_SIGN 66)  /* no such connection */
   95 #define EAFNOSUPPORT  (_SIGN 67)  /* address family not supported */
   96 #define EPROTONOSUPPORT (_SIGN 68) /* protocol not supported by AF */
   97 #define EPROTOTYPE    (_SIGN 69)  /* Protocol wrong type for socket */
   98 #define EINPROGRESS   (_SIGN 70)  /* Operation now in progress */
   99 #define EADDRNOTAVAIL (_SIGN 71)  /* Can't assign requested address */
  100 #define EALREADY      (_SIGN 72)  /* Connection already in progress */
  101 #define EMSGSIZE      (_SIGN 73)  /* Message too long */
  102 #define ELOOP         (_SIGN 74)  /* Too many levels of symbolic links */
  103 
  104 /* The following are not POSIX errors, but they can still happen. 
  105  * All of these are generated by the kernel and relate to message passing.
  106  */
  107 #define ELOCKED      (_SIGN 101)  /* can't send message due to deadlock */
  108 #define EBADCALL     (_SIGN 102)  /* illegal system call number */
  109 #define EBADSRCDST   (_SIGN 103)  /* bad source or destination process */
  110 #define ECALLDENIED  (_SIGN 104)  /* no permission for system call */
  111 #define EDEADSRCDST  (_SIGN 105)  /* source or destination is not alive */
  112 #define ENOTREADY    (_SIGN 106)  /* source or destination is not ready */
  113 #define EBADREQUEST  (_SIGN 107)  /* destination cannot handle request */
  114 #define ESRCDIED     (_SIGN 108)  /* source just died */
  115 #define EDSTDIED     (_SIGN 109)  /* destination just died */
  116 #define ETRAPDENIED  (_SIGN 110)  /* IPC trap not allowed */
  117 #define EDONTREPLY   (_SIGN 201)  /* pseudo-code: don't send a reply */
  118 
  119 #endif /* _ERRNO_H */

Cache object: 5142357186550a75a358b4d1b4ee049b


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.