xref: /freebsd/sys/compat/linux/linux_errno.inc (revision 1a8577fa68d68b14f6ccddd43d01436eb323151b)
11ac2776bSEd Maste/*-
21ac2776bSEd Maste * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
31ac2776bSEd Maste *
41ac2776bSEd Maste * Copyright (c) 1994-1996 Søren Schmidt
51ac2776bSEd Maste * All rights reserved.
61ac2776bSEd Maste *
71ac2776bSEd Maste * Redistribution and use in source and binary forms, with or without
81ac2776bSEd Maste * modification, are permitted provided that the following conditions
91ac2776bSEd Maste * are met:
101ac2776bSEd Maste * 1. Redistributions of source code must retain the above copyright
111ac2776bSEd Maste *    notice, this list of conditions and the following disclaimer.
121ac2776bSEd Maste * 2. Redistributions in binary form must reproduce the above copyright
131ac2776bSEd Maste *    notice, this list of conditions and the following disclaimer in the
141ac2776bSEd Maste *    documentation and/or other materials provided with the distribution.
151ac2776bSEd Maste *
161ac2776bSEd Maste * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
171ac2776bSEd Maste * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
181ac2776bSEd Maste * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
191ac2776bSEd Maste * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
201ac2776bSEd Maste * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
211ac2776bSEd Maste * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
221ac2776bSEd Maste * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
231ac2776bSEd Maste * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
241ac2776bSEd Maste * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
251ac2776bSEd Maste * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
261ac2776bSEd Maste * SUCH DAMAGE.
271ac2776bSEd Maste *
281ac2776bSEd Maste * $FreeBSD$
291ac2776bSEd Maste */
301ac2776bSEd Maste
311ac2776bSEd Maste/*
321ac2776bSEd Maste * Linux syscalls return negative errno's, we do positive and map them
331ac2776bSEd Maste * Reference:
341ac2776bSEd Maste *   FreeBSD: src/sys/sys/errno.h
351ac2776bSEd Maste *   Linux:   include/uapi/asm-generic/errno-base.h
361ac2776bSEd Maste *            include/uapi/asm-generic/errno.h
37*1a8577faSEdward Tomasz Napierala *
38*1a8577faSEdward Tomasz Napierala * XXX: The "XXX" comments below should be replaced with rationale
39*1a8577faSEdward Tomasz Napierala *      for the errno value chosen.
401ac2776bSEd Maste */
411ac2776bSEd Masteconst int linux_errtbl[ELAST + 1] = {
421701c69bSEdward Tomasz Napierala	/* [0, 9] */
431701c69bSEdward Tomasz Napierala	[0] = -0,
44*1a8577faSEdward Tomasz Napierala	[EPERM] = -LINUX_EPERM,
45*1a8577faSEdward Tomasz Napierala	[ENOENT] = -LINUX_ENOENT,
46*1a8577faSEdward Tomasz Napierala	[ESRCH] = -LINUX_ESRCH,
47*1a8577faSEdward Tomasz Napierala	[EINTR] = -LINUX_EINTR,
48*1a8577faSEdward Tomasz Napierala	[EIO] = -LINUX_EIO,
49*1a8577faSEdward Tomasz Napierala	[ENXIO] = -LINUX_ENXIO,
50*1a8577faSEdward Tomasz Napierala	[E2BIG] = -LINUX_E2BIG,
51*1a8577faSEdward Tomasz Napierala	[ENOEXEC] = -LINUX_ENOEXEC,
52*1a8577faSEdward Tomasz Napierala	[EBADF] = -LINUX_EBADF,
531ac2776bSEd Maste
541701c69bSEdward Tomasz Napierala	/* [10, 19] */
55*1a8577faSEdward Tomasz Napierala	[ECHILD] = -LINUX_ECHILD,
56*1a8577faSEdward Tomasz Napierala	[EDEADLK] = -LINUX_EDEADLK,
57*1a8577faSEdward Tomasz Napierala	[ENOMEM] = -LINUX_ENOMEM,
58*1a8577faSEdward Tomasz Napierala	[EACCES] = -LINUX_EACCES,
59*1a8577faSEdward Tomasz Napierala	[EFAULT] = -LINUX_EFAULT,
60*1a8577faSEdward Tomasz Napierala	[ENOTBLK] = -LINUX_ENOTBLK,
61*1a8577faSEdward Tomasz Napierala	[EBUSY] = -LINUX_EBUSY,
62*1a8577faSEdward Tomasz Napierala	[EEXIST] = -LINUX_EEXIST,
63*1a8577faSEdward Tomasz Napierala	[EXDEV] = -LINUX_EXDEV,
64*1a8577faSEdward Tomasz Napierala	[ENODEV] = -LINUX_ENODEV,
651ac2776bSEd Maste
661701c69bSEdward Tomasz Napierala	/* [20, 29] */
67*1a8577faSEdward Tomasz Napierala	[ENOTDIR] = -LINUX_ENOTDIR,
68*1a8577faSEdward Tomasz Napierala	[EISDIR] = -LINUX_EISDIR,
69*1a8577faSEdward Tomasz Napierala	[EINVAL] = -LINUX_EINVAL,
70*1a8577faSEdward Tomasz Napierala	[ENFILE] = -LINUX_ENFILE,
71*1a8577faSEdward Tomasz Napierala	[EMFILE] = -LINUX_EMFILE,
72*1a8577faSEdward Tomasz Napierala	[ENOTTY] = -LINUX_ENOTTY,
73*1a8577faSEdward Tomasz Napierala	[ETXTBSY] = -LINUX_ETXTBSY,
74*1a8577faSEdward Tomasz Napierala	[EFBIG] = -LINUX_EFBIG,
75*1a8577faSEdward Tomasz Napierala	[ENOSPC] = -LINUX_ENOSPC,
76*1a8577faSEdward Tomasz Napierala	[ESPIPE] = -LINUX_ESPIPE,
771ac2776bSEd Maste
781701c69bSEdward Tomasz Napierala	/* [30, 39] */
79*1a8577faSEdward Tomasz Napierala	[EROFS] = -LINUX_EROFS,
80*1a8577faSEdward Tomasz Napierala	[EMLINK] = -LINUX_EMLINK,
81*1a8577faSEdward Tomasz Napierala	[EPIPE] = -LINUX_EPIPE,
82*1a8577faSEdward Tomasz Napierala	[EDOM] = -LINUX_EDOM,
83*1a8577faSEdward Tomasz Napierala	[ERANGE] = -LINUX_ERANGE,
84*1a8577faSEdward Tomasz Napierala	[EAGAIN] = -LINUX_EAGAIN,
85*1a8577faSEdward Tomasz Napierala	[EINPROGRESS] = -LINUX_EINPROGRESS,
86*1a8577faSEdward Tomasz Napierala	[EALREADY] = -LINUX_EALREADY,
87*1a8577faSEdward Tomasz Napierala	[ENOTSOCK] = -LINUX_ENOTSOCK,
88*1a8577faSEdward Tomasz Napierala	[EDESTADDRREQ] = -LINUX_EDESTADDRREQ,
891ac2776bSEd Maste
901701c69bSEdward Tomasz Napierala	/* [40, 49] */
91*1a8577faSEdward Tomasz Napierala	[EMSGSIZE] = -LINUX_EMSGSIZE,
92*1a8577faSEdward Tomasz Napierala	[EPROTOTYPE] = -LINUX_EPROTOTYPE,
93*1a8577faSEdward Tomasz Napierala	[ENOPROTOOPT] = -LINUX_ENOPROTOOPT,
94*1a8577faSEdward Tomasz Napierala	[EPROTONOSUPPORT] = -LINUX_EPROTONOTSUPPORT,
95*1a8577faSEdward Tomasz Napierala	[ESOCKTNOSUPPORT] = -LINUX_ESOCKNOTSUPPORT,
96*1a8577faSEdward Tomasz Napierala	[EOPNOTSUPP] = -LINUX_EOPNOTSUPPORT,
97*1a8577faSEdward Tomasz Napierala	[EPFNOSUPPORT] = -LINUX_EPFNOTSUPPORT,
98*1a8577faSEdward Tomasz Napierala	[EAFNOSUPPORT] = -LINUX_EAFNOTSUPPORT,
99*1a8577faSEdward Tomasz Napierala	[EADDRINUSE] = -LINUX_EADDRINUSE,
100*1a8577faSEdward Tomasz Napierala	[EADDRNOTAVAIL] = -LINUX_EADDRNOTAVAIL,
1011ac2776bSEd Maste
1021701c69bSEdward Tomasz Napierala	/* [50, 59] */
103*1a8577faSEdward Tomasz Napierala	[ENETDOWN] = -LINUX_ENETDOWN,
104*1a8577faSEdward Tomasz Napierala	[ENETUNREACH] = -LINUX_ENETUNREACH,
105*1a8577faSEdward Tomasz Napierala	[ENETRESET] = -LINUX_ENETRESET,
106*1a8577faSEdward Tomasz Napierala	[ECONNABORTED] = -LINUX_ECONNABORTED,
107*1a8577faSEdward Tomasz Napierala	[ECONNRESET] = -LINUX_ECONNRESET,
108*1a8577faSEdward Tomasz Napierala	[ENOBUFS] = -LINUX_ENOBUFS,
109*1a8577faSEdward Tomasz Napierala	[EISCONN] = -LINUX_EISCONN,
110*1a8577faSEdward Tomasz Napierala	[ENOTCONN] = -LINUX_ENOTCONN,
111*1a8577faSEdward Tomasz Napierala	[ESHUTDOWN] = -LINUX_ESHUTDOWN,
112*1a8577faSEdward Tomasz Napierala	[ETOOMANYREFS] = -LINUX_ETOOMANYREFS,
1131ac2776bSEd Maste
1141701c69bSEdward Tomasz Napierala	/* [60, 69] */
115*1a8577faSEdward Tomasz Napierala	[ETIMEDOUT] = -LINUX_ETIMEDOUT,
116*1a8577faSEdward Tomasz Napierala	[ECONNREFUSED] = -LINUX_ECONNREFUSED,
117*1a8577faSEdward Tomasz Napierala	[ELOOP] = -LINUX_ELOOP,
118*1a8577faSEdward Tomasz Napierala	[ENAMETOOLONG] = -LINUX_ENAMETOOLONG,
119*1a8577faSEdward Tomasz Napierala	[EHOSTDOWN] = -LINUX_EHOSTDOWN,
120*1a8577faSEdward Tomasz Napierala	[EHOSTUNREACH] = -LINUX_EHOSTUNREACH,
121*1a8577faSEdward Tomasz Napierala	[ENOTEMPTY] = -LINUX_ENOTEMPTY,
122*1a8577faSEdward Tomasz Napierala	[EPROCLIM] = -LINUX_EAGAIN,	/* XXX */
123*1a8577faSEdward Tomasz Napierala	[EUSERS] = -LINUX_EUSERS,
124*1a8577faSEdward Tomasz Napierala	[EDQUOT] = -LINUX_EDQUOT,
1251ac2776bSEd Maste
1261701c69bSEdward Tomasz Napierala	/* [70, 79] */
127*1a8577faSEdward Tomasz Napierala	[ESTALE] = -LINUX_ESTALE,
128*1a8577faSEdward Tomasz Napierala	[EREMOTE] = -LINUX_EREMOTE,
129*1a8577faSEdward Tomasz Napierala	[EBADRPC] = -LINUX_ENXIO,	/* XXX */
130*1a8577faSEdward Tomasz Napierala	[ERPCMISMATCH] = -LINUX_ENXIO,	/* XXX */
131*1a8577faSEdward Tomasz Napierala	[EPROGUNAVAIL] = -LINUX_ENXIO,	/* XXX */
132*1a8577faSEdward Tomasz Napierala	[EPROGMISMATCH] = -LINUX_ENXIO,	/* XXX */
133*1a8577faSEdward Tomasz Napierala	[EPROCUNAVAIL] = -LINUX_ENXIO,	/* XXX */
134*1a8577faSEdward Tomasz Napierala	[ENOLCK] = -LINUX_ENOLCK,
135*1a8577faSEdward Tomasz Napierala	[ENOSYS] = -LINUX_ENOSYS,
136*1a8577faSEdward Tomasz Napierala	[EFTYPE] = -LINUX_EBADF,	/* XXX */
1371ac2776bSEd Maste
1381701c69bSEdward Tomasz Napierala	/* [80, 89] */
139*1a8577faSEdward Tomasz Napierala	[EAUTH] = -LINUX_ENXIO,		/* XXX */
140*1a8577faSEdward Tomasz Napierala	[ENEEDAUTH] = -LINUX_ENXIO,	/* XXX */
141*1a8577faSEdward Tomasz Napierala	[EIDRM] = -LINUX_EIDRM,
142*1a8577faSEdward Tomasz Napierala	[ENOMSG] = -LINUX_ENOMSG,
143*1a8577faSEdward Tomasz Napierala	[EOVERFLOW] = -LINUX_EOVERFLOW,
144*1a8577faSEdward Tomasz Napierala	[ECANCELED] = -LINUX_ECANCELED,
145*1a8577faSEdward Tomasz Napierala	[EILSEQ] = -LINUX_EILSEQ,
146*1a8577faSEdward Tomasz Napierala	[ENOATTR] = -LINUX_ENODATA,	/* XXX */
147*1a8577faSEdward Tomasz Napierala	[EDOOFUS] = -LINUX_EINVAL,	/* XXX */
148*1a8577faSEdward Tomasz Napierala	[EBADMSG] = -LINUX_EBADMSG,
1491ac2776bSEd Maste
1501701c69bSEdward Tomasz Napierala	/* [90, 99] */
151*1a8577faSEdward Tomasz Napierala	[EMULTIHOP] = -LINUX_EMULTIHOP,
152*1a8577faSEdward Tomasz Napierala	[ENOLINK] = -LINUX_ENOLINK,
153*1a8577faSEdward Tomasz Napierala	[EPROTO] = -LINUX_EPROTO,
154*1a8577faSEdward Tomasz Napierala	[ENOTCAPABLE] = -LINUX_EPERM,	/* XXX */
155*1a8577faSEdward Tomasz Napierala	[ECAPMODE] = -LINUX_EPERM,	/* XXX */
156*1a8577faSEdward Tomasz Napierala	[ENOTRECOVERABLE] = -LINUX_ENOTRECOVERABLE,
157*1a8577faSEdward Tomasz Napierala	[EOWNERDEAD] = -LINUX_EOWNERDEAD,
158*1a8577faSEdward Tomasz Napierala	[EINTEGRITY] = -LINUX_EINVAL,	/* XXX */
1591ac2776bSEd Maste};
1601ac2776bSEd Maste
16188640c0eSKirk McKusick_Static_assert(ELAST == 97,
1621ac2776bSEd Maste    "missing errno entries in linux_errtbl");
163