aboutsummaryrefslogtreecommitdiff
path: root/sys/amd64/linux
diff options
context:
space:
mode:
authorEd Maste <emaste@FreeBSD.org>2018-03-16 14:46:38 +0000
committerEd Maste <emaste@FreeBSD.org>2018-03-16 14:46:38 +0000
commit6e481f83f7ff59b62539d608ba87818588fd5797 (patch)
treea7925d8d87225d5a35202e44696ae8b9d0db31b8 /sys/amd64/linux
parent1d071ce340d77e086e2d3ee85de9b68508fe1666 (diff)
downloadsrc-6e481f83f7ff59b62539d608ba87818588fd5797.tar.gz
src-6e481f83f7ff59b62539d608ba87818588fd5797.zip
Share a single bsd-linux errno table across MD consumers
Three copies of the linuxulator linux_sysvec.c contained identical BSD to Linux errno translation tables, and future work to support other architectures will also use the same table. Move the table to a common file to be used by all. Make it 'const int' to place it in .rodata. (Some existing Linux architectures use MD errno values, but x86 and Arm share the generic set.) This change should introduce no functional change; a followup will add missing errno values. MFC after: 3 weeks Sponsored by: Turing Robotic Industries Inc. Differential Revision: https://reviews.freebsd.org/D14665
Notes
Notes: svn path=/head/; revision=331056
Diffstat (limited to 'sys/amd64/linux')
-rw-r--r--sys/amd64/linux/linux_sysvec.c22
1 files changed, 1 insertions, 21 deletions
diff --git a/sys/amd64/linux/linux_sysvec.c b/sys/amd64/linux/linux_sysvec.c
index 802b3cb19b05..cc2a654b400e 100644
--- a/sys/amd64/linux/linux_sysvec.c
+++ b/sys/amd64/linux/linux_sysvec.c
@@ -130,26 +130,6 @@ static void linux_exec_setregs(struct thread *td, struct image_params *imgp,
u_long stack);
static int linux_vsyscall(struct thread *td);
-/*
- * Linux syscalls return negative errno's, we do positive and map them
- * Reference:
- * FreeBSD: src/sys/sys/errno.h
- * Linux: linux-2.6.17.8/include/asm-generic/errno-base.h
- * linux-2.6.17.8/include/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
-};
-
#define LINUX_T_UNKNOWN 255
static int _bsd_to_linux_trapcode[] = {
LINUX_T_UNKNOWN, /* 0 */
@@ -774,7 +754,7 @@ struct sysentvec elf_linux_sysvec = {
.sv_table = linux_sysent,
.sv_mask = 0,
.sv_errsize = ELAST + 1,
- .sv_errtbl = bsd_to_linux_errno,
+ .sv_errtbl = bsd_to_linux_errno_generic,
.sv_transtrap = translate_traps,
.sv_fixup = elf_linux_fixup,
.sv_sendsig = linux_rt_sendsig,