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