1 /*
2 * There are two expected ways of including this header.
3 *
4 * 1) The "default" case (expected from tools etc).
5 *
6 * Simply #include <public/errno.h>
7 *
8 * In this circumstance, normal header guards apply and the includer shall get
9 * an enumeration in the XEN_xxx namespace, appropriate for C or assembly.
10 *
11 * 2) The special case where the includer provides a XEN_ERRNO() in scope.
12 *
13 * In this case, no inclusion guards apply and the caller is responsible for
14 * their XEN_ERRNO() being appropriate in the included context. The header
15 * will unilaterally #undef XEN_ERRNO().
16 */
17
18 #ifndef XEN_ERRNO
19
20 /*
21 * Includer has not provided a custom XEN_ERRNO(). Arrange for normal header
22 * guards, an automatic enum (for C code) and constants in the XEN_xxx
23 * namespace.
24 */
25 #ifndef __XEN_PUBLIC_ERRNO_H__
26 #define __XEN_PUBLIC_ERRNO_H__
27
28 #define XEN_ERRNO_DEFAULT_INCLUDE
29
30 #ifndef __ASSEMBLY__
31
32 #define XEN_ERRNO(name, value) XEN_##name = value,
33 enum xen_errno {
34
35 #elif __XEN_INTERFACE_VERSION__ < 0x00040700
36
37 #define XEN_ERRNO(name, value) .equ XEN_##name, value
38
39 #endif /* __ASSEMBLY__ */
40
41 #endif /* __XEN_PUBLIC_ERRNO_H__ */
42 #endif /* !XEN_ERRNO */
43
44 /* ` enum neg_errnoval { [ -Efoo for each Efoo in the list below ] } */
45 /* ` enum errnoval { */
46
47 #ifdef XEN_ERRNO
48
49 /*
50 * Values originating from x86 Linux. Please consider using respective
51 * values when adding new definitions here.
52 *
53 * The set of identifiers to be added here shouldn't extend beyond what
54 * POSIX mandates (see e.g.
55 * http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/errno.h.html)
56 * with the exception that we support some optional (XSR) values
57 * specified there (but no new ones should be added).
58 */
59
60 XEN_ERRNO(EPERM, 1) /* Operation not permitted */
61 XEN_ERRNO(ENOENT, 2) /* No such file or directory */
62 XEN_ERRNO(ESRCH, 3) /* No such process */
63 #ifdef __XEN__ /* Internal only, should never be exposed to the guest. */
64 XEN_ERRNO(EINTR, 4) /* Interrupted system call */
65 #endif
66 XEN_ERRNO(EIO, 5) /* I/O error */
67 XEN_ERRNO(ENXIO, 6) /* No such device or address */
68 XEN_ERRNO(E2BIG, 7) /* Arg list too long */
69 XEN_ERRNO(ENOEXEC, 8) /* Exec format error */
70 XEN_ERRNO(EBADF, 9) /* Bad file number */
71 XEN_ERRNO(ECHILD, 10) /* No child processes */
72 XEN_ERRNO(EAGAIN, 11) /* Try again */
73 XEN_ERRNO(EWOULDBLOCK, 11) /* Operation would block. Aliases EAGAIN */
74 XEN_ERRNO(ENOMEM, 12) /* Out of memory */
75 XEN_ERRNO(EACCES, 13) /* Permission denied */
76 XEN_ERRNO(EFAULT, 14) /* Bad address */
77 XEN_ERRNO(EBUSY, 16) /* Device or resource busy */
78 XEN_ERRNO(EEXIST, 17) /* File exists */
79 XEN_ERRNO(EXDEV, 18) /* Cross-device link */
80 XEN_ERRNO(ENODEV, 19) /* No such device */
81 XEN_ERRNO(EISDIR, 21) /* Is a directory */
82 XEN_ERRNO(EINVAL, 22) /* Invalid argument */
83 XEN_ERRNO(ENFILE, 23) /* File table overflow */
84 XEN_ERRNO(EMFILE, 24) /* Too many open files */
85 XEN_ERRNO(ENOSPC, 28) /* No space left on device */
86 XEN_ERRNO(EROFS, 30) /* Read-only file system */
87 XEN_ERRNO(EMLINK, 31) /* Too many links */
88 XEN_ERRNO(EDOM, 33) /* Math argument out of domain of func */
89 XEN_ERRNO(ERANGE, 34) /* Math result not representable */
90 XEN_ERRNO(EDEADLK, 35) /* Resource deadlock would occur */
91 XEN_ERRNO(EDEADLOCK, 35) /* Resource deadlock would occur. Aliases EDEADLK */
92 XEN_ERRNO(ENAMETOOLONG, 36) /* File name too long */
93 XEN_ERRNO(ENOLCK, 37) /* No record locks available */
94 XEN_ERRNO(ENOSYS, 38) /* Function not implemented */
95 XEN_ERRNO(ENOTEMPTY, 39) /* Directory not empty */
96 XEN_ERRNO(ENODATA, 61) /* No data available */
97 XEN_ERRNO(ETIME, 62) /* Timer expired */
98 XEN_ERRNO(EBADMSG, 74) /* Not a data message */
99 XEN_ERRNO(EOVERFLOW, 75) /* Value too large for defined data type */
100 XEN_ERRNO(EILSEQ, 84) /* Illegal byte sequence */
101 #ifdef __XEN__ /* Internal only, should never be exposed to the guest. */
102 XEN_ERRNO(ERESTART, 85) /* Interrupted system call should be restarted */
103 #endif
104 XEN_ERRNO(ENOTSOCK, 88) /* Socket operation on non-socket */
105 XEN_ERRNO(EMSGSIZE, 90) /* Message too large. */
106 XEN_ERRNO(EOPNOTSUPP, 95) /* Operation not supported on transport endpoint */
107 XEN_ERRNO(EADDRINUSE, 98) /* Address already in use */
108 XEN_ERRNO(EADDRNOTAVAIL, 99) /* Cannot assign requested address */
109 XEN_ERRNO(ENOBUFS, 105) /* No buffer space available */
110 XEN_ERRNO(EISCONN, 106) /* Transport endpoint is already connected */
111 XEN_ERRNO(ENOTCONN, 107) /* Transport endpoint is not connected */
112 XEN_ERRNO(ETIMEDOUT, 110) /* Connection timed out */
113 XEN_ERRNO(ECONNREFUSED, 111) /* Connection refused */
114
115 #undef XEN_ERRNO
116 #endif /* XEN_ERRNO */
117 /* ` } */
118
119 /* Clean up from a default include. Close the enum (for C). */
120 #ifdef XEN_ERRNO_DEFAULT_INCLUDE
121 #undef XEN_ERRNO_DEFAULT_INCLUDE
122 #ifndef __ASSEMBLY__
123 };
124 #endif
125
126 #endif /* XEN_ERRNO_DEFAULT_INCLUDE */
Cache object: 16ef33016c8ac034d00c3e941f7c3b7c
|