1 | /* $NetBSD: linux_errno.c,v 1.15 2013/12/22 17:14:22 njoly Exp $ */ |
2 | |
3 | /*- |
4 | * Copyright (c) 1995 The NetBSD Foundation, Inc. |
5 | * All rights reserved. |
6 | * |
7 | * This code is derived from software contributed to The NetBSD Foundation |
8 | * by Frank van der Linden. |
9 | * |
10 | * Redistribution and use in source and binary forms, with or without |
11 | * modification, are permitted provided that the following conditions |
12 | * are met: |
13 | * 1. Redistributions of source code must retain the above copyright |
14 | * notice, this list of conditions and the following disclaimer. |
15 | * 2. Redistributions in binary form must reproduce the above copyright |
16 | * notice, this list of conditions and the following disclaimer in the |
17 | * documentation and/or other materials provided with the distribution. |
18 | * |
19 | * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS |
20 | * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED |
21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
22 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS |
23 | * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
24 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
25 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
26 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
27 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
28 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
29 | * POSSIBILITY OF SUCH DAMAGE. |
30 | */ |
31 | |
32 | #include <sys/cdefs.h> |
33 | __KERNEL_RCSID(0, "$NetBSD: linux_errno.c,v 1.15 2013/12/22 17:14:22 njoly Exp $" ); |
34 | |
35 | #include <sys/errno.h> |
36 | |
37 | #include <compat/linux/common/linux_errno.h> |
38 | |
39 | /* |
40 | * This list is used to translate NetBSD errnos to linux errnos |
41 | * when returning from a system call. (NetBSD system call->linux program) |
42 | */ |
43 | const int native_to_linux_errno[] = { |
44 | 0, |
45 | LINUX_SCERR_SIGN LINUX_EPERM, |
46 | LINUX_SCERR_SIGN LINUX_ENOENT, |
47 | LINUX_SCERR_SIGN LINUX_ESRCH, |
48 | LINUX_SCERR_SIGN LINUX_EINTR, |
49 | LINUX_SCERR_SIGN LINUX_EIO, |
50 | LINUX_SCERR_SIGN LINUX_ENXIO, |
51 | LINUX_SCERR_SIGN LINUX_E2BIG, |
52 | LINUX_SCERR_SIGN LINUX_ENOEXEC, |
53 | LINUX_SCERR_SIGN LINUX_EBADF, |
54 | LINUX_SCERR_SIGN LINUX_ECHILD, |
55 | LINUX_SCERR_SIGN LINUX_EDEADLK, |
56 | LINUX_SCERR_SIGN LINUX_ENOMEM, |
57 | LINUX_SCERR_SIGN LINUX_EACCES, |
58 | LINUX_SCERR_SIGN LINUX_EFAULT, |
59 | LINUX_SCERR_SIGN LINUX_ENOTBLK, |
60 | LINUX_SCERR_SIGN LINUX_EBUSY, |
61 | LINUX_SCERR_SIGN LINUX_EEXIST, |
62 | LINUX_SCERR_SIGN LINUX_EXDEV, |
63 | LINUX_SCERR_SIGN LINUX_ENODEV, |
64 | LINUX_SCERR_SIGN LINUX_ENOTDIR, |
65 | LINUX_SCERR_SIGN LINUX_EISDIR, |
66 | LINUX_SCERR_SIGN LINUX_EINVAL, |
67 | LINUX_SCERR_SIGN LINUX_ENFILE, |
68 | LINUX_SCERR_SIGN LINUX_EMFILE, |
69 | LINUX_SCERR_SIGN LINUX_ENOTTY, |
70 | LINUX_SCERR_SIGN LINUX_ETXTBSY, |
71 | LINUX_SCERR_SIGN LINUX_EFBIG, |
72 | LINUX_SCERR_SIGN LINUX_ENOSPC, |
73 | LINUX_SCERR_SIGN LINUX_ESPIPE, |
74 | LINUX_SCERR_SIGN LINUX_EROFS, |
75 | LINUX_SCERR_SIGN LINUX_EMLINK, |
76 | LINUX_SCERR_SIGN LINUX_EPIPE, |
77 | LINUX_SCERR_SIGN LINUX_EDOM, |
78 | LINUX_SCERR_SIGN LINUX_ERANGE, |
79 | LINUX_SCERR_SIGN LINUX_EAGAIN, |
80 | LINUX_SCERR_SIGN LINUX_EINPROGRESS, |
81 | LINUX_SCERR_SIGN LINUX_EALREADY, |
82 | LINUX_SCERR_SIGN LINUX_ENOTSOCK, |
83 | LINUX_SCERR_SIGN LINUX_EDESTADDRREQ, |
84 | LINUX_SCERR_SIGN LINUX_EMSGSIZE, |
85 | LINUX_SCERR_SIGN LINUX_EPROTOTYPE, |
86 | LINUX_SCERR_SIGN LINUX_ENOPROTOOPT, |
87 | LINUX_SCERR_SIGN LINUX_EPROTONOSUPPORT, |
88 | LINUX_SCERR_SIGN LINUX_ESOCKTNOSUPPORT, |
89 | LINUX_SCERR_SIGN LINUX_EOPNOTSUPP, |
90 | LINUX_SCERR_SIGN LINUX_EPFNOSUPPORT, |
91 | LINUX_SCERR_SIGN LINUX_EAFNOSUPPORT, |
92 | LINUX_SCERR_SIGN LINUX_EADDRINUSE, |
93 | LINUX_SCERR_SIGN LINUX_EADDRNOTAVAIL, |
94 | LINUX_SCERR_SIGN LINUX_ENETDOWN, |
95 | LINUX_SCERR_SIGN LINUX_ENETUNREACH, |
96 | LINUX_SCERR_SIGN LINUX_ENETRESET, |
97 | LINUX_SCERR_SIGN LINUX_ECONNABORTED, |
98 | LINUX_SCERR_SIGN LINUX_ECONNRESET, |
99 | LINUX_SCERR_SIGN LINUX_ENOBUFS, |
100 | LINUX_SCERR_SIGN LINUX_EISCONN, |
101 | LINUX_SCERR_SIGN LINUX_ENOTCONN, |
102 | LINUX_SCERR_SIGN LINUX_ESHUTDOWN, |
103 | LINUX_SCERR_SIGN LINUX_ETOOMANYREFS, |
104 | LINUX_SCERR_SIGN LINUX_ETIMEDOUT, |
105 | LINUX_SCERR_SIGN LINUX_ECONNREFUSED, |
106 | LINUX_SCERR_SIGN LINUX_ELOOP, |
107 | LINUX_SCERR_SIGN LINUX_ENAMETOOLONG, |
108 | LINUX_SCERR_SIGN LINUX_EHOSTDOWN, |
109 | LINUX_SCERR_SIGN LINUX_EHOSTUNREACH, |
110 | LINUX_SCERR_SIGN LINUX_ENOTEMPTY, |
111 | LINUX_SCERR_SIGN LINUX_ENOSYS, /* not mapped (EPROCLIM) */ |
112 | LINUX_SCERR_SIGN LINUX_EUSERS, |
113 | LINUX_SCERR_SIGN LINUX_EDQUOT, |
114 | LINUX_SCERR_SIGN LINUX_ESTALE, |
115 | LINUX_SCERR_SIGN LINUX_EREMOTE, |
116 | LINUX_SCERR_SIGN LINUX_ENOSYS, /* not mapped (EBADRPC) */ |
117 | LINUX_SCERR_SIGN LINUX_ENOSYS, /* not mapped (ERPCMISMATCH) */ |
118 | LINUX_SCERR_SIGN LINUX_ENOSYS, /* not mapped (EPROGUNAVAIL) */ |
119 | LINUX_SCERR_SIGN LINUX_ENOSYS, /* not mapped (EPROGMISMATCH) */ |
120 | LINUX_SCERR_SIGN LINUX_ENOSYS, /* not mapped (EPROCUNAVAIL) */ |
121 | LINUX_SCERR_SIGN LINUX_ENOLCK, |
122 | LINUX_SCERR_SIGN LINUX_ENOSYS, |
123 | LINUX_SCERR_SIGN LINUX_ENOSYS, /* not mapped (EFTYPE) */ |
124 | LINUX_SCERR_SIGN LINUX_ENOSYS, /* not mapped (EAUTH) */ |
125 | LINUX_SCERR_SIGN LINUX_ENOSYS, /* not mapped (ENEEDAUTH) */ |
126 | LINUX_SCERR_SIGN LINUX_EIDRM, |
127 | LINUX_SCERR_SIGN LINUX_ENOMSG, /* 83 */ |
128 | LINUX_SCERR_SIGN LINUX_EOVERFLOW, |
129 | LINUX_SCERR_SIGN LINUX_EILSEQ, |
130 | LINUX_SCERR_SIGN LINUX_ENOTSUP, |
131 | LINUX_SCERR_SIGN LINUX_ECANCELED, |
132 | LINUX_SCERR_SIGN LINUX_EBADMSG, |
133 | LINUX_SCERR_SIGN LINUX_ENODATA, |
134 | LINUX_SCERR_SIGN LINUX_ENOSR, |
135 | LINUX_SCERR_SIGN LINUX_ENOSTR, |
136 | LINUX_SCERR_SIGN LINUX_ETIME, |
137 | LINUX_SCERR_SIGN LINUX_ENOSYS, /* not mapped (ENOATTR) */ |
138 | LINUX_SCERR_SIGN LINUX_EMULTIHOP, |
139 | LINUX_SCERR_SIGN LINUX_ENOLINK, |
140 | LINUX_SCERR_SIGN LINUX_EPROTO, /* 96 */ |
141 | }; |
142 | __CTASSERT(__arraycount(native_to_linux_errno) == ELAST + 1); |
143 | |