Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 28 Apr 2019 13:40:17 +0000 (UTC)
From:      Dmitry Chagin <dchagin@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject:   svn commit: r346827 - in stable/11: lib/libsysdecode sys/amd64/linux sys/amd64/linux32 sys/compat/linux sys/i386/linux sys/modules/linux_common
Message-ID:  <201904281340.x3SDeHkn023667@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: dchagin
Date: Sun Apr 28 13:40:17 2019
New Revision: 346827
URL: https://svnweb.freebsd.org/changeset/base/346827

Log:
  MFC r331356 (by emaste@):
  
  Share Linux errno table with libsysdecode.

Added:
  stable/11/sys/compat/linux/linux_errno.inc
     - copied unchanged from r331356, head/sys/compat/linux/linux_errno.inc
Modified:
  stable/11/lib/libsysdecode/errno.c
  stable/11/sys/amd64/linux/linux_sysvec.c
  stable/11/sys/amd64/linux32/linux32_sysvec.c
  stable/11/sys/compat/linux/linux_emul.h
  stable/11/sys/compat/linux/linux_errno.c
  stable/11/sys/i386/linux/linux_sysvec.c
  stable/11/sys/modules/linux_common/Makefile
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/lib/libsysdecode/errno.c
==============================================================================
--- stable/11/lib/libsysdecode/errno.c	Sun Apr 28 13:38:29 2019	(r346826)
+++ stable/11/lib/libsysdecode/errno.c	Sun Apr 28 13:40:17 2019	(r346827)
@@ -37,25 +37,8 @@ __FBSDID("$FreeBSD$");
 #include <sysdecode.h>
 
 #if defined(__i386__) || defined(__amd64__)
-/*
- * Linux syscalls return negative errno's, we do positive and map them
- * Reference:
- *   FreeBSD: src/sys/sys/errno.h
- *   Linux:   include/uapi/asm-generic/errno-base.h
- *            include/uapi/asm-generic/errno.h
- */
-static int bsd_to_linux_errno[ELAST + 1] = {
-	-0,  -1,  -2,  -3,  -4,  -5,  -6,  -7,  -8,  -9,
-	-10, -35, -12, -13, -14, -15, -16, -17, -18, -19,
-	-20, -21, -22, -23, -24, -25, -26, -27, -28, -29,
-	-30, -31, -32, -33, -34, -11,-115,-114, -88, -89,
-	-90, -91, -92, -93, -94, -95, -96, -97, -98, -99,
-	-100,-101,-102,-103,-104,-105,-106,-107,-108,-109,
-	-110,-111, -40, -36,-112,-113, -39, -11, -87,-122,
-	-116, -66,  -6,  -6,  -6,  -6,  -6, -37, -38,  -9,
-	  -6,  -6, -43, -42, -75,-125, -84, -61, -16, -74,
-	 -72, -67, -71,  -1,  -1, -131, -130
-};
+static
+#include <compat/linux/linux_errno.inc>
 #endif
 
 #if defined(__aarch64__) || defined(__amd64__)
@@ -158,8 +141,8 @@ sysdecode_abi_to_freebsd_errno(enum sysdecode_abi abi,
 		 * This is imprecise since it returns the first
 		 * matching errno.
 		 */
-		for (i = 0; i < nitems(bsd_to_linux_errno); i++) {
-			if (error == bsd_to_linux_errno[i])
+		for (i = 0; i < nitems(linux_errtbl); i++) {
+			if (error == linux_errtbl[i])
 				return (i);
 		}
 		break;
@@ -190,7 +173,7 @@ sysdecode_freebsd_to_abi_errno(enum sysdecode_abi abi,
 	case SYSDECODE_ABI_LINUX:
 	case SYSDECODE_ABI_LINUX32:
 		if (error >= 0 && error <= ELAST)
-			return (bsd_to_linux_errno[error]);
+			return (linux_errtbl[error]);
 		break;
 #endif
 #if defined(__aarch64__) || defined(__amd64__)

Modified: stable/11/sys/amd64/linux/linux_sysvec.c
==============================================================================
--- stable/11/sys/amd64/linux/linux_sysvec.c	Sun Apr 28 13:38:29 2019	(r346826)
+++ stable/11/sys/amd64/linux/linux_sysvec.c	Sun Apr 28 13:40:17 2019	(r346827)
@@ -751,7 +751,7 @@ struct sysentvec elf_linux_sysvec = {
 	.sv_table	= linux_sysent,
 	.sv_mask	= 0,
 	.sv_errsize	= ELAST + 1,
-	.sv_errtbl	= bsd_to_linux_errno_generic,
+	.sv_errtbl	= linux_errtbl,
 	.sv_transtrap	= linux_translate_traps,
 	.sv_fixup	= linux_fixup_elf,
 	.sv_sendsig	= linux_rt_sendsig,

Modified: stable/11/sys/amd64/linux32/linux32_sysvec.c
==============================================================================
--- stable/11/sys/amd64/linux32/linux32_sysvec.c	Sun Apr 28 13:38:29 2019	(r346826)
+++ stable/11/sys/amd64/linux32/linux32_sysvec.c	Sun Apr 28 13:40:17 2019	(r346827)
@@ -952,7 +952,7 @@ struct sysentvec elf_linux_sysvec = {
 	.sv_table	= linux32_sysent,
 	.sv_mask	= 0,
 	.sv_errsize	= ELAST + 1,
-	.sv_errtbl	= bsd_to_linux_errno_generic,
+	.sv_errtbl	= linux_errtbl,
 	.sv_transtrap	= linux_translate_traps,
 	.sv_fixup	= linux_fixup_elf,
 	.sv_sendsig	= linux_sendsig,

Modified: stable/11/sys/compat/linux/linux_emul.h
==============================================================================
--- stable/11/sys/compat/linux/linux_emul.h	Sun Apr 28 13:38:29 2019	(r346826)
+++ stable/11/sys/compat/linux/linux_emul.h	Sun Apr 28 13:40:17 2019	(r346827)
@@ -77,6 +77,6 @@ struct linux_pemuldata {
 
 struct linux_pemuldata	*pem_find(struct proc *);
 
-extern const int bsd_to_linux_errno_generic[];
+extern const int linux_errtbl[];
 
 #endif	/* !_LINUX_EMUL_H_ */

Modified: stable/11/sys/compat/linux/linux_errno.c
==============================================================================
--- stable/11/sys/compat/linux/linux_errno.c	Sun Apr 28 13:38:29 2019	(r346826)
+++ stable/11/sys/compat/linux/linux_errno.c	Sun Apr 28 13:40:17 2019	(r346827)
@@ -1,151 +1,6 @@
-/*-
- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
- *
- * Copyright (c) 1994-1996 Søren Schmidt
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $FreeBSD$
- */
+/* $FreeBSD$ */
 
 #include <sys/cdefs.h>
 #include <sys/errno.h>
 
-/*
- * Linux syscalls return negative errno's, we do positive and map them
- * Reference:
- *   FreeBSD: src/sys/sys/errno.h
- *   Linux:   include/uapi/asm-generic/errno-base.h
- *            include/uapi/asm-generic/errno.h
- */
-const int bsd_to_linux_errno_generic[ELAST + 1] = {
-	-0,
-	-1,
-	-2,
-	-3,
-	-4,
-	-5,
-	-6,
-	-7,
-	-8,
-	-9,
-
-	-10,
-	-35,	/* EDEADLK */
-	-12,
-	-13,
-	-14,
-	-15,
-	-16,
-	-17,
-	-18,
-	-19,
-
-	-20,
-	-21,
-	-22,
-	-23,
-	-24,
-	-25,
-	-26,
-	-27,
-	-28,
-	-29,
-
-	-30,
-	-31,
-	-32,
-	-33,
-	-34,
-	-11,	/* EAGAIN */
-	-115,
-	-114,
-	-88,
-	-89,
-
-	-90,
-	-91,
-	-92,
-	-93,
-	-94,
-	-95,
-	-96,
-	-97,
-	-98,
-	-99,
-
-	-100,
-	-101,
-	-102,
-	-103,
-	-104,
-	-105,
-	-106,
-	-107,
-	-108,
-	-109,
-
-	-110,
-	-111,
-	-40,
-	-36,
-	-112,
-	-113,
-	-39,
-	-11,
-	-87,
-	-122,
-
-	-116,
-	-66,
-	-6,	/* EBADRPC -> ENXIO */
-	-6,	/* ERPCMISMATCH -> ENXIO */
-	-6,	/* EPROGUNAVAIL -> ENXIO */
-	-6,	/* EPROGMISMATCH -> ENXIO */
-	-6,	/* EPROCUNAVAIL -> ENXIO */
-	-37,
-	-38,
-	-9,
-
-	-6,	/* EAUTH -> ENXIO */
-	-6,	/* ENEEDAUTH -> ENXIO */
-	-43,
-	-42,
-	-75,
-	-125,
-	-84,
-	-61,
-	-16,	/* EDOOFUS -> EBUSY */
-	-74,
-
-	-72,
-	-67,
-	-71,
-	-1,	/* ENOTCAPABLE -> EPERM */
-	-1,	/* ECAPMODE -> EPERM */
-	-131,	/* ENOTRECOVERABLE */
-	-130,	/* EOWNERDEAD */
-};
-
-_Static_assert(ELAST == 96,
-    "missing errno entries in bsd_to_linux_errno_generic");
+#include <compat/linux/linux_errno.inc>

Copied: stable/11/sys/compat/linux/linux_errno.inc (from r331356, head/sys/compat/linux/linux_errno.inc)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ stable/11/sys/compat/linux/linux_errno.inc	Sun Apr 28 13:40:17 2019	(r346827, copy of r331356, head/sys/compat/linux/linux_errno.inc)
@@ -0,0 +1,148 @@
+/*-
+ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ *
+ * Copyright (c) 1994-1996 Søren Schmidt
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * Linux syscalls return negative errno's, we do positive and map them
+ * Reference:
+ *   FreeBSD: src/sys/sys/errno.h
+ *   Linux:   include/uapi/asm-generic/errno-base.h
+ *            include/uapi/asm-generic/errno.h
+ */
+const int linux_errtbl[ELAST + 1] = {
+	-0,
+	-1,
+	-2,
+	-3,
+	-4,
+	-5,
+	-6,
+	-7,
+	-8,
+	-9,
+
+	-10,
+	-35,	/* EDEADLK */
+	-12,
+	-13,
+	-14,
+	-15,
+	-16,
+	-17,
+	-18,
+	-19,
+
+	-20,
+	-21,
+	-22,
+	-23,
+	-24,
+	-25,
+	-26,
+	-27,
+	-28,
+	-29,
+
+	-30,
+	-31,
+	-32,
+	-33,
+	-34,
+	-11,	/* EAGAIN */
+	-115,
+	-114,
+	-88,
+	-89,
+
+	-90,
+	-91,
+	-92,
+	-93,
+	-94,
+	-95,
+	-96,
+	-97,
+	-98,
+	-99,
+
+	-100,
+	-101,
+	-102,
+	-103,
+	-104,
+	-105,
+	-106,
+	-107,
+	-108,
+	-109,
+
+	-110,
+	-111,
+	-40,
+	-36,
+	-112,
+	-113,
+	-39,
+	-11,
+	-87,
+	-122,
+
+	-116,
+	-66,
+	-6,	/* EBADRPC -> ENXIO */
+	-6,	/* ERPCMISMATCH -> ENXIO */
+	-6,	/* EPROGUNAVAIL -> ENXIO */
+	-6,	/* EPROGMISMATCH -> ENXIO */
+	-6,	/* EPROCUNAVAIL -> ENXIO */
+	-37,
+	-38,
+	-9,
+
+	-6,	/* EAUTH -> ENXIO */
+	-6,	/* ENEEDAUTH -> ENXIO */
+	-43,
+	-42,
+	-75,
+	-125,
+	-84,
+	-61,
+	-16,	/* EDOOFUS -> EBUSY */
+	-74,
+
+	-72,
+	-67,
+	-71,
+	-1,	/* ENOTCAPABLE -> EPERM */
+	-1,	/* ECAPMODE -> EPERM */
+	-131,	/* ENOTRECOVERABLE */
+	-130,	/* EOWNERDEAD */
+};
+
+_Static_assert(ELAST == 96,
+    "missing errno entries in linux_errtbl");

Modified: stable/11/sys/i386/linux/linux_sysvec.c
==============================================================================
--- stable/11/sys/i386/linux/linux_sysvec.c	Sun Apr 28 13:38:29 2019	(r346826)
+++ stable/11/sys/i386/linux/linux_sysvec.c	Sun Apr 28 13:40:17 2019	(r346827)
@@ -885,7 +885,7 @@ struct sysentvec linux_sysvec = {
 	.sv_table	= linux_sysent,
 	.sv_mask	= 0,
 	.sv_errsize	= ELAST + 1,
-	.sv_errtbl	= bsd_to_linux_errno_generic,
+	.sv_errtbl	= linux_errtbl,
 	.sv_transtrap	= linux_translate_traps,
 	.sv_fixup	= linux_fixup,
 	.sv_sendsig	= linux_sendsig,
@@ -922,7 +922,7 @@ struct sysentvec elf_linux_sysvec = {
 	.sv_table	= linux_sysent,
 	.sv_mask	= 0,
 	.sv_errsize	= ELAST + 1,
-	.sv_errtbl	= bsd_to_linux_errno_generic,
+	.sv_errtbl	= linux_errtbl,
 	.sv_transtrap	= linux_translate_traps,
 	.sv_fixup	= linux_fixup_elf,
 	.sv_sendsig	= linux_sendsig,

Modified: stable/11/sys/modules/linux_common/Makefile
==============================================================================
--- stable/11/sys/modules/linux_common/Makefile	Sun Apr 28 13:38:29 2019	(r346826)
+++ stable/11/sys/modules/linux_common/Makefile	Sun Apr 28 13:40:17 2019	(r346827)
@@ -8,8 +8,8 @@ SRCS=	linux_common.c linux_mib.c linux_mmap.c linux_ut
 	linux.c opt_compat.h device_if.h vnode_if.h bus_if.h
 
 EXPORT_SYMS=
-EXPORT_SYMS+=	bsd_to_linux_errno_generic
 EXPORT_SYMS+=	linux_emul_path
+EXPORT_SYMS+=	linux_errtbl
 EXPORT_SYMS+=	linux_ioctl_register_handler
 EXPORT_SYMS+=	linux_ioctl_unregister_handler
 EXPORT_SYMS+=	linux_get_osname



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201904281340.x3SDeHkn023667>