xref: /freebsd/sys/contrib/xen/errno.h (revision 3a9fd824)
13a9fd824SRoger Pau Monné /*
23a9fd824SRoger Pau Monné  * There are two expected ways of including this header.
33a9fd824SRoger Pau Monné  *
43a9fd824SRoger Pau Monné  * 1) The "default" case (expected from tools etc).
53a9fd824SRoger Pau Monné  *
63a9fd824SRoger Pau Monné  * Simply #include <public/errno.h>
73a9fd824SRoger Pau Monné  *
83a9fd824SRoger Pau Monné  * In this circumstance, normal header guards apply and the includer shall get
93a9fd824SRoger Pau Monné  * an enumeration in the XEN_xxx namespace, appropriate for C or assembly.
103a9fd824SRoger Pau Monné  *
113a9fd824SRoger Pau Monné  * 2) The special case where the includer provides a XEN_ERRNO() in scope.
123a9fd824SRoger Pau Monné  *
133a9fd824SRoger Pau Monné  * In this case, no inclusion guards apply and the caller is responsible for
143a9fd824SRoger Pau Monné  * their XEN_ERRNO() being appropriate in the included context.  The header
153a9fd824SRoger Pau Monné  * will unilaterally #undef XEN_ERRNO().
163a9fd824SRoger Pau Monné  */
173a9fd824SRoger Pau Monné 
183a9fd824SRoger Pau Monné #ifndef XEN_ERRNO
193a9fd824SRoger Pau Monné 
203a9fd824SRoger Pau Monné /*
213a9fd824SRoger Pau Monné  * Includer has not provided a custom XEN_ERRNO().  Arrange for normal header
223a9fd824SRoger Pau Monné  * guards, an automatic enum (for C code) and constants in the XEN_xxx
233a9fd824SRoger Pau Monné  * namespace.
243a9fd824SRoger Pau Monné  */
253a9fd824SRoger Pau Monné #ifndef __XEN_PUBLIC_ERRNO_H__
263a9fd824SRoger Pau Monné #define __XEN_PUBLIC_ERRNO_H__
273a9fd824SRoger Pau Monné 
283a9fd824SRoger Pau Monné #define XEN_ERRNO_DEFAULT_INCLUDE
293a9fd824SRoger Pau Monné 
303a9fd824SRoger Pau Monné #ifndef __ASSEMBLY__
313a9fd824SRoger Pau Monné 
323a9fd824SRoger Pau Monné #define XEN_ERRNO(name, value) XEN_##name = value,
333a9fd824SRoger Pau Monné enum xen_errno {
343a9fd824SRoger Pau Monné 
353a9fd824SRoger Pau Monné #elif __XEN_INTERFACE_VERSION__ < 0x00040700
363a9fd824SRoger Pau Monné 
373a9fd824SRoger Pau Monné #define XEN_ERRNO(name, value) .equ XEN_##name, value
383a9fd824SRoger Pau Monné 
393a9fd824SRoger Pau Monné #endif /* __ASSEMBLY__ */
403a9fd824SRoger Pau Monné 
413a9fd824SRoger Pau Monné #endif /* __XEN_PUBLIC_ERRNO_H__ */
423a9fd824SRoger Pau Monné #endif /* !XEN_ERRNO */
433a9fd824SRoger Pau Monné 
443a9fd824SRoger Pau Monné /* ` enum neg_errnoval {  [ -Efoo for each Efoo in the list below ]  } */
453a9fd824SRoger Pau Monné /* ` enum errnoval { */
463a9fd824SRoger Pau Monné 
473a9fd824SRoger Pau Monné #ifdef XEN_ERRNO
483a9fd824SRoger Pau Monné 
493a9fd824SRoger Pau Monné /*
503a9fd824SRoger Pau Monné  * Values originating from x86 Linux. Please consider using respective
513a9fd824SRoger Pau Monné  * values when adding new definitions here.
523a9fd824SRoger Pau Monné  *
533a9fd824SRoger Pau Monné  * The set of identifiers to be added here shouldn't extend beyond what
543a9fd824SRoger Pau Monné  * POSIX mandates (see e.g.
553a9fd824SRoger Pau Monné  * http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/errno.h.html)
563a9fd824SRoger Pau Monné  * with the exception that we support some optional (XSR) values
573a9fd824SRoger Pau Monné  * specified there (but no new ones should be added).
583a9fd824SRoger Pau Monné  */
593a9fd824SRoger Pau Monné 
603a9fd824SRoger Pau Monné XEN_ERRNO(EPERM,	 1)	/* Operation not permitted */
613a9fd824SRoger Pau Monné XEN_ERRNO(ENOENT,	 2)	/* No such file or directory */
623a9fd824SRoger Pau Monné XEN_ERRNO(ESRCH,	 3)	/* No such process */
633a9fd824SRoger Pau Monné #ifdef __XEN__ /* Internal only, should never be exposed to the guest. */
643a9fd824SRoger Pau Monné XEN_ERRNO(EINTR,	 4)	/* Interrupted system call */
653a9fd824SRoger Pau Monné #endif
663a9fd824SRoger Pau Monné XEN_ERRNO(EIO,		 5)	/* I/O error */
673a9fd824SRoger Pau Monné XEN_ERRNO(ENXIO,	 6)	/* No such device or address */
683a9fd824SRoger Pau Monné XEN_ERRNO(E2BIG,	 7)	/* Arg list too long */
693a9fd824SRoger Pau Monné XEN_ERRNO(ENOEXEC,	 8)	/* Exec format error */
703a9fd824SRoger Pau Monné XEN_ERRNO(EBADF,	 9)	/* Bad file number */
713a9fd824SRoger Pau Monné XEN_ERRNO(ECHILD,	10)	/* No child processes */
723a9fd824SRoger Pau Monné XEN_ERRNO(EAGAIN,	11)	/* Try again */
733a9fd824SRoger Pau Monné XEN_ERRNO(EWOULDBLOCK,	11)	/* Operation would block.  Aliases EAGAIN */
743a9fd824SRoger Pau Monné XEN_ERRNO(ENOMEM,	12)	/* Out of memory */
753a9fd824SRoger Pau Monné XEN_ERRNO(EACCES,	13)	/* Permission denied */
763a9fd824SRoger Pau Monné XEN_ERRNO(EFAULT,	14)	/* Bad address */
773a9fd824SRoger Pau Monné XEN_ERRNO(EBUSY,	16)	/* Device or resource busy */
783a9fd824SRoger Pau Monné XEN_ERRNO(EEXIST,	17)	/* File exists */
793a9fd824SRoger Pau Monné XEN_ERRNO(EXDEV,	18)	/* Cross-device link */
803a9fd824SRoger Pau Monné XEN_ERRNO(ENODEV,	19)	/* No such device */
813a9fd824SRoger Pau Monné XEN_ERRNO(ENOTDIR,	20)	/* Not a directory */
823a9fd824SRoger Pau Monné XEN_ERRNO(EISDIR,	21)	/* Is a directory */
833a9fd824SRoger Pau Monné XEN_ERRNO(EINVAL,	22)	/* Invalid argument */
843a9fd824SRoger Pau Monné XEN_ERRNO(ENFILE,	23)	/* File table overflow */
853a9fd824SRoger Pau Monné XEN_ERRNO(EMFILE,	24)	/* Too many open files */
863a9fd824SRoger Pau Monné XEN_ERRNO(ENOSPC,	28)	/* No space left on device */
873a9fd824SRoger Pau Monné XEN_ERRNO(EROFS,	30)	/* Read-only file system */
883a9fd824SRoger Pau Monné XEN_ERRNO(EMLINK,	31)	/* Too many links */
893a9fd824SRoger Pau Monné XEN_ERRNO(EDOM,		33)	/* Math argument out of domain of func */
903a9fd824SRoger Pau Monné XEN_ERRNO(ERANGE,	34)	/* Math result not representable */
913a9fd824SRoger Pau Monné XEN_ERRNO(EDEADLK,	35)	/* Resource deadlock would occur */
923a9fd824SRoger Pau Monné XEN_ERRNO(EDEADLOCK,	35)	/* Resource deadlock would occur. Aliases EDEADLK */
933a9fd824SRoger Pau Monné XEN_ERRNO(ENAMETOOLONG,	36)	/* File name too long */
943a9fd824SRoger Pau Monné XEN_ERRNO(ENOLCK,	37)	/* No record locks available */
953a9fd824SRoger Pau Monné XEN_ERRNO(ENOSYS,	38)	/* Function not implemented */
963a9fd824SRoger Pau Monné XEN_ERRNO(ENOTEMPTY,	39)	/* Directory not empty */
973a9fd824SRoger Pau Monné XEN_ERRNO(ENODATA,	61)	/* No data available */
983a9fd824SRoger Pau Monné XEN_ERRNO(ETIME,	62)	/* Timer expired */
993a9fd824SRoger Pau Monné XEN_ERRNO(EBADMSG,	74)	/* Not a data message */
1003a9fd824SRoger Pau Monné XEN_ERRNO(EOVERFLOW,	75)	/* Value too large for defined data type */
1013a9fd824SRoger Pau Monné XEN_ERRNO(EILSEQ,	84)	/* Illegal byte sequence */
1023a9fd824SRoger Pau Monné #ifdef __XEN__ /* Internal only, should never be exposed to the guest. */
1033a9fd824SRoger Pau Monné XEN_ERRNO(ERESTART,	85)	/* Interrupted system call should be restarted */
1043a9fd824SRoger Pau Monné #endif
1053a9fd824SRoger Pau Monné XEN_ERRNO(ENOTSOCK,	88)	/* Socket operation on non-socket */
1063a9fd824SRoger Pau Monné XEN_ERRNO(EMSGSIZE,	90)	/* Message too large. */
1073a9fd824SRoger Pau Monné XEN_ERRNO(EOPNOTSUPP,	95)	/* Operation not supported on transport endpoint */
1083a9fd824SRoger Pau Monné XEN_ERRNO(EADDRINUSE,	98)	/* Address already in use */
1093a9fd824SRoger Pau Monné XEN_ERRNO(EADDRNOTAVAIL, 99)	/* Cannot assign requested address */
1103a9fd824SRoger Pau Monné XEN_ERRNO(ENOBUFS,	105)	/* No buffer space available */
1113a9fd824SRoger Pau Monné XEN_ERRNO(EISCONN,	106)	/* Transport endpoint is already connected */
1123a9fd824SRoger Pau Monné XEN_ERRNO(ENOTCONN,	107)	/* Transport endpoint is not connected */
1133a9fd824SRoger Pau Monné XEN_ERRNO(ETIMEDOUT,	110)	/* Connection timed out */
1143a9fd824SRoger Pau Monné XEN_ERRNO(ECONNREFUSED,	111)	/* Connection refused */
1153a9fd824SRoger Pau Monné 
1163a9fd824SRoger Pau Monné #undef XEN_ERRNO
1173a9fd824SRoger Pau Monné #endif /* XEN_ERRNO */
1183a9fd824SRoger Pau Monné /* ` } */
1193a9fd824SRoger Pau Monné 
1203a9fd824SRoger Pau Monné /* Clean up from a default include.  Close the enum (for C). */
1213a9fd824SRoger Pau Monné #ifdef XEN_ERRNO_DEFAULT_INCLUDE
1223a9fd824SRoger Pau Monné #undef XEN_ERRNO_DEFAULT_INCLUDE
1233a9fd824SRoger Pau Monné #ifndef __ASSEMBLY__
1243a9fd824SRoger Pau Monné };
1253a9fd824SRoger Pau Monné #endif
1263a9fd824SRoger Pau Monné 
1273a9fd824SRoger Pau Monné #endif /* XEN_ERRNO_DEFAULT_INCLUDE */
128