1*558ea2bcSmgorny /* $NetBSD: linux_errno.c,v 1.16 2020/03/08 22:09:43 mgorny Exp $ */ 2a7660152Serh 3a7660152Serh /*- 4a7660152Serh * Copyright (c) 1995 The NetBSD Foundation, Inc. 5a7660152Serh * All rights reserved. 6a7660152Serh * 7a7660152Serh * This code is derived from software contributed to The NetBSD Foundation 8a7660152Serh * by Frank van der Linden. 9a7660152Serh * 10a7660152Serh * Redistribution and use in source and binary forms, with or without 11a7660152Serh * modification, are permitted provided that the following conditions 12a7660152Serh * are met: 13a7660152Serh * 1. Redistributions of source code must retain the above copyright 14a7660152Serh * notice, this list of conditions and the following disclaimer. 15a7660152Serh * 2. Redistributions in binary form must reproduce the above copyright 16a7660152Serh * notice, this list of conditions and the following disclaimer in the 17a7660152Serh * documentation and/or other materials provided with the distribution. 18a7660152Serh * 19a7660152Serh * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 20a7660152Serh * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 21a7660152Serh * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 22a7660152Serh * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 23a7660152Serh * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 24a7660152Serh * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 25a7660152Serh * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 26a7660152Serh * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 27a7660152Serh * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 28a7660152Serh * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 29a7660152Serh * POSSIBILITY OF SUCH DAMAGE. 30a7660152Serh */ 31a7660152Serh 32dab6ef8bSlukem #include <sys/cdefs.h> 33*558ea2bcSmgorny __KERNEL_RCSID(0, "$NetBSD: linux_errno.c,v 1.16 2020/03/08 22:09:43 mgorny Exp $"); 34b50661d9Snjoly 35b50661d9Snjoly #include <sys/errno.h> 36dab6ef8bSlukem 37a7660152Serh #include <compat/linux/common/linux_errno.h> 38a7660152Serh 39a7660152Serh /* 408b351f01Serh * This list is used to translate NetBSD errnos to linux errnos 41a7660152Serh * when returning from a system call. (NetBSD system call->linux program) 42a7660152Serh */ 4334c8ae80Sjdolecek const int native_to_linux_errno[] = { 44a7660152Serh 0, 4516bc5b40Smanu LINUX_SCERR_SIGN LINUX_EPERM, 4616bc5b40Smanu LINUX_SCERR_SIGN LINUX_ENOENT, 4716bc5b40Smanu LINUX_SCERR_SIGN LINUX_ESRCH, 4816bc5b40Smanu LINUX_SCERR_SIGN LINUX_EINTR, 4916bc5b40Smanu LINUX_SCERR_SIGN LINUX_EIO, 5016bc5b40Smanu LINUX_SCERR_SIGN LINUX_ENXIO, 5116bc5b40Smanu LINUX_SCERR_SIGN LINUX_E2BIG, 5216bc5b40Smanu LINUX_SCERR_SIGN LINUX_ENOEXEC, 5316bc5b40Smanu LINUX_SCERR_SIGN LINUX_EBADF, 5416bc5b40Smanu LINUX_SCERR_SIGN LINUX_ECHILD, 5516bc5b40Smanu LINUX_SCERR_SIGN LINUX_EDEADLK, 5616bc5b40Smanu LINUX_SCERR_SIGN LINUX_ENOMEM, 5716bc5b40Smanu LINUX_SCERR_SIGN LINUX_EACCES, 5816bc5b40Smanu LINUX_SCERR_SIGN LINUX_EFAULT, 5916bc5b40Smanu LINUX_SCERR_SIGN LINUX_ENOTBLK, 6016bc5b40Smanu LINUX_SCERR_SIGN LINUX_EBUSY, 6116bc5b40Smanu LINUX_SCERR_SIGN LINUX_EEXIST, 6216bc5b40Smanu LINUX_SCERR_SIGN LINUX_EXDEV, 6316bc5b40Smanu LINUX_SCERR_SIGN LINUX_ENODEV, 6416bc5b40Smanu LINUX_SCERR_SIGN LINUX_ENOTDIR, 6516bc5b40Smanu LINUX_SCERR_SIGN LINUX_EISDIR, 6616bc5b40Smanu LINUX_SCERR_SIGN LINUX_EINVAL, 6716bc5b40Smanu LINUX_SCERR_SIGN LINUX_ENFILE, 6816bc5b40Smanu LINUX_SCERR_SIGN LINUX_EMFILE, 6916bc5b40Smanu LINUX_SCERR_SIGN LINUX_ENOTTY, 7016bc5b40Smanu LINUX_SCERR_SIGN LINUX_ETXTBSY, 7116bc5b40Smanu LINUX_SCERR_SIGN LINUX_EFBIG, 7216bc5b40Smanu LINUX_SCERR_SIGN LINUX_ENOSPC, 7316bc5b40Smanu LINUX_SCERR_SIGN LINUX_ESPIPE, 7416bc5b40Smanu LINUX_SCERR_SIGN LINUX_EROFS, 7516bc5b40Smanu LINUX_SCERR_SIGN LINUX_EMLINK, 7616bc5b40Smanu LINUX_SCERR_SIGN LINUX_EPIPE, 7716bc5b40Smanu LINUX_SCERR_SIGN LINUX_EDOM, 7816bc5b40Smanu LINUX_SCERR_SIGN LINUX_ERANGE, 7916bc5b40Smanu LINUX_SCERR_SIGN LINUX_EAGAIN, 8016bc5b40Smanu LINUX_SCERR_SIGN LINUX_EINPROGRESS, 8116bc5b40Smanu LINUX_SCERR_SIGN LINUX_EALREADY, 8216bc5b40Smanu LINUX_SCERR_SIGN LINUX_ENOTSOCK, 8316bc5b40Smanu LINUX_SCERR_SIGN LINUX_EDESTADDRREQ, 8416bc5b40Smanu LINUX_SCERR_SIGN LINUX_EMSGSIZE, 8516bc5b40Smanu LINUX_SCERR_SIGN LINUX_EPROTOTYPE, 8616bc5b40Smanu LINUX_SCERR_SIGN LINUX_ENOPROTOOPT, 8716bc5b40Smanu LINUX_SCERR_SIGN LINUX_EPROTONOSUPPORT, 8816bc5b40Smanu LINUX_SCERR_SIGN LINUX_ESOCKTNOSUPPORT, 8916bc5b40Smanu LINUX_SCERR_SIGN LINUX_EOPNOTSUPP, 9016bc5b40Smanu LINUX_SCERR_SIGN LINUX_EPFNOSUPPORT, 9116bc5b40Smanu LINUX_SCERR_SIGN LINUX_EAFNOSUPPORT, 9216bc5b40Smanu LINUX_SCERR_SIGN LINUX_EADDRINUSE, 9316bc5b40Smanu LINUX_SCERR_SIGN LINUX_EADDRNOTAVAIL, 9416bc5b40Smanu LINUX_SCERR_SIGN LINUX_ENETDOWN, 9516bc5b40Smanu LINUX_SCERR_SIGN LINUX_ENETUNREACH, 9616bc5b40Smanu LINUX_SCERR_SIGN LINUX_ENETRESET, 9716bc5b40Smanu LINUX_SCERR_SIGN LINUX_ECONNABORTED, 9816bc5b40Smanu LINUX_SCERR_SIGN LINUX_ECONNRESET, 9916bc5b40Smanu LINUX_SCERR_SIGN LINUX_ENOBUFS, 10016bc5b40Smanu LINUX_SCERR_SIGN LINUX_EISCONN, 10116bc5b40Smanu LINUX_SCERR_SIGN LINUX_ENOTCONN, 10216bc5b40Smanu LINUX_SCERR_SIGN LINUX_ESHUTDOWN, 10316bc5b40Smanu LINUX_SCERR_SIGN LINUX_ETOOMANYREFS, 10416bc5b40Smanu LINUX_SCERR_SIGN LINUX_ETIMEDOUT, 10516bc5b40Smanu LINUX_SCERR_SIGN LINUX_ECONNREFUSED, 10616bc5b40Smanu LINUX_SCERR_SIGN LINUX_ELOOP, 10716bc5b40Smanu LINUX_SCERR_SIGN LINUX_ENAMETOOLONG, 10816bc5b40Smanu LINUX_SCERR_SIGN LINUX_EHOSTDOWN, 10916bc5b40Smanu LINUX_SCERR_SIGN LINUX_EHOSTUNREACH, 11016bc5b40Smanu LINUX_SCERR_SIGN LINUX_ENOTEMPTY, 11116bc5b40Smanu LINUX_SCERR_SIGN LINUX_ENOSYS, /* not mapped (EPROCLIM) */ 11216bc5b40Smanu LINUX_SCERR_SIGN LINUX_EUSERS, 11316bc5b40Smanu LINUX_SCERR_SIGN LINUX_EDQUOT, 11416bc5b40Smanu LINUX_SCERR_SIGN LINUX_ESTALE, 11516bc5b40Smanu LINUX_SCERR_SIGN LINUX_EREMOTE, 11616bc5b40Smanu LINUX_SCERR_SIGN LINUX_ENOSYS, /* not mapped (EBADRPC) */ 11716bc5b40Smanu LINUX_SCERR_SIGN LINUX_ENOSYS, /* not mapped (ERPCMISMATCH) */ 11816bc5b40Smanu LINUX_SCERR_SIGN LINUX_ENOSYS, /* not mapped (EPROGUNAVAIL) */ 11916bc5b40Smanu LINUX_SCERR_SIGN LINUX_ENOSYS, /* not mapped (EPROGMISMATCH) */ 12016bc5b40Smanu LINUX_SCERR_SIGN LINUX_ENOSYS, /* not mapped (EPROCUNAVAIL) */ 12116bc5b40Smanu LINUX_SCERR_SIGN LINUX_ENOLCK, 12216bc5b40Smanu LINUX_SCERR_SIGN LINUX_ENOSYS, 12316bc5b40Smanu LINUX_SCERR_SIGN LINUX_ENOSYS, /* not mapped (EFTYPE) */ 12416bc5b40Smanu LINUX_SCERR_SIGN LINUX_ENOSYS, /* not mapped (EAUTH) */ 12516bc5b40Smanu LINUX_SCERR_SIGN LINUX_ENOSYS, /* not mapped (ENEEDAUTH) */ 12616bc5b40Smanu LINUX_SCERR_SIGN LINUX_EIDRM, 12716bc5b40Smanu LINUX_SCERR_SIGN LINUX_ENOMSG, /* 83 */ 128b647d3d5Snjoly LINUX_SCERR_SIGN LINUX_EOVERFLOW, 129b647d3d5Snjoly LINUX_SCERR_SIGN LINUX_EILSEQ, 130b647d3d5Snjoly LINUX_SCERR_SIGN LINUX_ENOTSUP, 131b647d3d5Snjoly LINUX_SCERR_SIGN LINUX_ECANCELED, 132b647d3d5Snjoly LINUX_SCERR_SIGN LINUX_EBADMSG, 133b647d3d5Snjoly LINUX_SCERR_SIGN LINUX_ENODATA, 134b647d3d5Snjoly LINUX_SCERR_SIGN LINUX_ENOSR, 135b647d3d5Snjoly LINUX_SCERR_SIGN LINUX_ENOSTR, 136b647d3d5Snjoly LINUX_SCERR_SIGN LINUX_ETIME, 137b647d3d5Snjoly LINUX_SCERR_SIGN LINUX_ENOSYS, /* not mapped (ENOATTR) */ 138b647d3d5Snjoly LINUX_SCERR_SIGN LINUX_EMULTIHOP, 139b647d3d5Snjoly LINUX_SCERR_SIGN LINUX_ENOLINK, 140b647d3d5Snjoly LINUX_SCERR_SIGN LINUX_EPROTO, /* 96 */ 141*558ea2bcSmgorny LINUX_SCERR_SIGN LINUX_EOWNERDEAD, 142*558ea2bcSmgorny LINUX_SCERR_SIGN LINUX_ENOTRECOVERABLE, 143a7660152Serh }; 144b50661d9Snjoly __CTASSERT(__arraycount(native_to_linux_errno) == ELAST + 1); 145