Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F109757092
D26388.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
11 KB
Referenced Files
None
Subscribers
None
D26388.diff
View Options
Index: head/sys/amd64/amd64/elf_machdep.c
===================================================================
--- head/sys/amd64/amd64/elf_machdep.c
+++ head/sys/amd64/amd64/elf_machdep.c
@@ -52,8 +52,6 @@
struct sysentvec elf64_freebsd_sysvec_la48 = {
.sv_size = SYS_MAXSYSCALL,
.sv_table = sysent,
- .sv_errsize = 0,
- .sv_errtbl = NULL,
.sv_transtrap = NULL,
.sv_fixup = __elfN(freebsd_fixup),
.sv_sendsig = sendsig,
@@ -89,8 +87,6 @@
struct sysentvec elf64_freebsd_sysvec_la57 = {
.sv_size = SYS_MAXSYSCALL,
.sv_table = sysent,
- .sv_errsize = 0,
- .sv_errtbl = NULL,
.sv_transtrap = NULL,
.sv_fixup = __elfN(freebsd_fixup),
.sv_sendsig = sendsig,
Index: head/sys/amd64/linux/linux_sysvec.c
===================================================================
--- head/sys/amd64/linux/linux_sysvec.c
+++ head/sys/amd64/linux/linux_sysvec.c
@@ -221,7 +221,7 @@
if (__predict_false(error != 0)) {
if (error != ERESTART && error != EJUSTRETURN)
- frame->tf_rax = SV_ABI_ERRNO(td->td_proc, error);
+ frame->tf_rax = linux_to_bsd_errno(error);
}
/* Restore all registers. */
@@ -732,8 +732,6 @@
struct sysentvec elf_linux_sysvec = {
.sv_size = LINUX_SYS_MAXSYSCALL,
.sv_table = linux_sysent,
- .sv_errsize = ELAST + 1,
- .sv_errtbl = linux_errtbl,
.sv_transtrap = linux_translate_traps,
.sv_fixup = linux_fixup_elf,
.sv_sendsig = linux_rt_sendsig,
Index: head/sys/amd64/linux32/linux32_sysvec.c
===================================================================
--- head/sys/amd64/linux32/linux32_sysvec.c
+++ head/sys/amd64/linux32/linux32_sysvec.c
@@ -679,7 +679,7 @@
if (__predict_false(error != 0)) {
if (error != ERESTART && error != EJUSTRETURN)
- frame->tf_rax = SV_ABI_ERRNO(td->td_proc, error);
+ frame->tf_rax = linux_to_bsd_errno(error);
}
}
@@ -898,8 +898,6 @@
struct sysentvec elf_linux_sysvec = {
.sv_size = LINUX32_SYS_MAXSYSCALL,
.sv_table = linux32_sysent,
- .sv_errsize = ELAST + 1,
- .sv_errtbl = linux_errtbl,
.sv_transtrap = linux_translate_traps,
.sv_fixup = linux_fixup_elf,
.sv_sendsig = linux_sendsig,
Index: head/sys/arm/arm/elf_machdep.c
===================================================================
--- head/sys/arm/arm/elf_machdep.c
+++ head/sys/arm/arm/elf_machdep.c
@@ -65,8 +65,6 @@
struct sysentvec elf32_freebsd_sysvec = {
.sv_size = SYS_MAXSYSCALL,
.sv_table = sysent,
- .sv_errsize = 0,
- .sv_errtbl = NULL,
.sv_transtrap = NULL,
.sv_fixup = __elfN(freebsd_fixup),
.sv_sendsig = sendsig,
Index: head/sys/arm64/arm64/elf32_machdep.c
===================================================================
--- head/sys/arm64/arm64/elf32_machdep.c
+++ head/sys/arm64/arm64/elf32_machdep.c
@@ -77,8 +77,6 @@
static struct sysentvec elf32_freebsd_sysvec = {
.sv_size = SYS_MAXSYSCALL,
.sv_table = freebsd32_sysent,
- .sv_errsize = 0,
- .sv_errtbl = NULL,
.sv_transtrap = NULL,
.sv_fixup = elf32_freebsd_fixup,
.sv_sendsig = freebsd32_sendsig,
Index: head/sys/arm64/arm64/elf_machdep.c
===================================================================
--- head/sys/arm64/arm64/elf_machdep.c
+++ head/sys/arm64/arm64/elf_machdep.c
@@ -61,8 +61,6 @@
static struct sysentvec elf64_freebsd_sysvec = {
.sv_size = SYS_MAXSYSCALL,
.sv_table = sysent,
- .sv_errsize = 0,
- .sv_errtbl = NULL,
.sv_transtrap = NULL,
.sv_fixup = __elfN(freebsd_fixup),
.sv_sendsig = sendsig,
Index: head/sys/arm64/linux/linux_sysvec.c
===================================================================
--- head/sys/arm64/linux/linux_sysvec.c
+++ head/sys/arm64/linux/linux_sysvec.c
@@ -145,7 +145,7 @@
if (__predict_false(error != 0)) {
if (error != ERESTART && error != EJUSTRETURN) {
td->td_frame->tf_x[0] =
- SV_ABI_ERRNO(td->td_proc, error);
+ linux_to_bsd_errno(error);
}
}
}
@@ -394,8 +394,6 @@
struct sysentvec elf_linux_sysvec = {
.sv_size = LINUX_SYS_MAXSYSCALL,
.sv_table = linux_sysent,
- .sv_errsize = ELAST + 1,
- .sv_errtbl = linux_errtbl,
.sv_transtrap = linux_translate_traps,
.sv_fixup = linux_elf_fixup,
.sv_sendsig = linux_rt_sendsig,
Index: head/sys/compat/ia32/ia32_sysvec.c
===================================================================
--- head/sys/compat/ia32/ia32_sysvec.c
+++ head/sys/compat/ia32/ia32_sysvec.c
@@ -98,8 +98,6 @@
struct sysentvec ia32_freebsd_sysvec = {
.sv_size = FREEBSD32_SYS_MAXSYSCALL,
.sv_table = freebsd32_sysent,
- .sv_errsize = 0,
- .sv_errtbl = NULL,
.sv_transtrap = NULL,
.sv_fixup = elf32_freebsd_fixup,
.sv_sendsig = ia32_sendsig,
Index: head/sys/compat/linux/linux.h
===================================================================
--- head/sys/compat/linux/linux.h
+++ head/sys/compat/linux/linux.h
@@ -192,4 +192,6 @@
}
#define BITMAP_1t1_LINUX(_name) BITMAP_EASY_LINUX(_name, LINUX_##_name)
+int linux_to_bsd_errno(int error);
+
#endif /* _LINUX_MI_H_ */
Index: head/sys/compat/linux/linux_errno.c
===================================================================
--- head/sys/compat/linux/linux_errno.c
+++ head/sys/compat/linux/linux_errno.c
@@ -1,6 +1,21 @@
/* $FreeBSD$ */
#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/param.h>
#include <sys/errno.h>
+#include <sys/systm.h>
+#include <compat/linux/linux.h>
#include <compat/linux/linux_errno.inc>
+
+int
+linux_to_bsd_errno(int error)
+{
+
+ KASSERT(error >= 0 && error <= ELAST,
+ ("%s: bad error %d", __func__, error));
+
+ return (linux_errtbl[error]);
+}
Index: head/sys/compat/linux/linux_socket.c
===================================================================
--- head/sys/compat/linux/linux_socket.c
+++ head/sys/compat/linux/linux_socket.c
@@ -1553,7 +1553,7 @@
name, &newval, UIO_SYSSPACE, &len);
if (error != 0)
return (error);
- newval = -SV_ABI_ERRNO(td->td_proc, newval);
+ newval = -linux_to_bsd_errno(newval);
return (copyout(&newval, PTRIN(args->optval), len));
/* NOTREACHED */
default:
Index: head/sys/i386/i386/elf_machdep.c
===================================================================
--- head/sys/i386/i386/elf_machdep.c
+++ head/sys/i386/i386/elf_machdep.c
@@ -54,8 +54,6 @@
struct sysentvec elf32_freebsd_sysvec = {
.sv_size = SYS_MAXSYSCALL,
.sv_table = sysent,
- .sv_errsize = 0,
- .sv_errtbl = NULL,
.sv_transtrap = NULL,
.sv_fixup = __elfN(freebsd_fixup),
.sv_sendsig = sendsig,
Index: head/sys/i386/linux/linux_sysvec.c
===================================================================
--- head/sys/i386/linux/linux_sysvec.c
+++ head/sys/i386/linux/linux_sysvec.c
@@ -801,7 +801,7 @@
if (__predict_false(error != 0)) {
if (error != ERESTART && error != EJUSTRETURN)
- frame->tf_eax = SV_ABI_ERRNO(td->td_proc, error);
+ frame->tf_eax = linux_to_bsd_errno(error);
}
}
@@ -847,8 +847,6 @@
struct sysentvec linux_sysvec = {
.sv_size = LINUX_SYS_MAXSYSCALL,
.sv_table = linux_sysent,
- .sv_errsize = ELAST + 1,
- .sv_errtbl = linux_errtbl,
.sv_transtrap = linux_translate_traps,
.sv_fixup = linux_fixup,
.sv_sendsig = linux_sendsig,
@@ -882,8 +880,6 @@
struct sysentvec elf_linux_sysvec = {
.sv_size = LINUX_SYS_MAXSYSCALL,
.sv_table = linux_sysent,
- .sv_errsize = ELAST + 1,
- .sv_errtbl = linux_errtbl,
.sv_transtrap = linux_translate_traps,
.sv_fixup = linux_fixup_elf,
.sv_sendsig = linux_sendsig,
Index: head/sys/kern/imgact_aout.c
===================================================================
--- head/sys/kern/imgact_aout.c
+++ head/sys/kern/imgact_aout.c
@@ -76,8 +76,6 @@
struct sysentvec aout_sysvec = {
.sv_size = SYS_MAXSYSCALL,
.sv_table = sysent,
- .sv_errsize = 0,
- .sv_errtbl = NULL,
.sv_transtrap = NULL,
.sv_fixup = aout_fixup,
.sv_sendsig = sendsig,
@@ -117,8 +115,6 @@
struct sysentvec aout_sysvec = {
.sv_size = FREEBSD32_SYS_MAXSYSCALL,
.sv_table = freebsd32_sysent,
- .sv_errsize = 0,
- .sv_errtbl = NULL,
.sv_transtrap = NULL,
.sv_fixup = aout_fixup,
.sv_sendsig = ia32_sendsig,
Index: head/sys/kern/init_main.c
===================================================================
--- head/sys/kern/init_main.c
+++ head/sys/kern/init_main.c
@@ -403,8 +403,6 @@
struct sysentvec null_sysvec = {
.sv_size = 0,
.sv_table = NULL,
- .sv_errsize = 0,
- .sv_errtbl = NULL,
.sv_transtrap = NULL,
.sv_fixup = NULL,
.sv_sendsig = NULL,
Index: head/sys/mips/mips/elf_machdep.c
===================================================================
--- head/sys/mips/mips/elf_machdep.c
+++ head/sys/mips/mips/elf_machdep.c
@@ -54,8 +54,6 @@
static struct sysentvec elf_freebsd_sysvec = {
.sv_size = SYS_MAXSYSCALL,
.sv_table = sysent,
- .sv_errsize = 0,
- .sv_errtbl = NULL,
.sv_transtrap = NULL,
.sv_fixup = __elfN(freebsd_fixup),
.sv_sendsig = sendsig,
Index: head/sys/mips/mips/freebsd32_machdep.c
===================================================================
--- head/sys/mips/mips/freebsd32_machdep.c
+++ head/sys/mips/mips/freebsd32_machdep.c
@@ -77,8 +77,6 @@
struct sysentvec elf32_freebsd_sysvec = {
.sv_size = SYS_MAXSYSCALL,
.sv_table = freebsd32_sysent,
- .sv_errsize = 0,
- .sv_errtbl = NULL,
.sv_transtrap = NULL,
.sv_fixup = __elfN(freebsd_fixup),
.sv_sendsig = freebsd32_sendsig,
Index: head/sys/powerpc/powerpc/elf32_machdep.c
===================================================================
--- head/sys/powerpc/powerpc/elf32_machdep.c
+++ head/sys/powerpc/powerpc/elf32_machdep.c
@@ -90,8 +90,6 @@
#else
.sv_table = sysent,
#endif
- .sv_errsize = 0,
- .sv_errtbl = NULL,
.sv_transtrap = NULL,
.sv_fixup = __elfN(freebsd_fixup),
.sv_copyout_auxargs = __elfN(powerpc_copyout_auxargs),
Index: head/sys/powerpc/powerpc/elf64_machdep.c
===================================================================
--- head/sys/powerpc/powerpc/elf64_machdep.c
+++ head/sys/powerpc/powerpc/elf64_machdep.c
@@ -62,8 +62,6 @@
struct sysentvec elf64_freebsd_sysvec_v1 = {
.sv_size = SYS_MAXSYSCALL,
.sv_table = sysent,
- .sv_errsize = 0,
- .sv_errtbl = NULL,
.sv_transtrap = NULL,
.sv_fixup = __elfN(freebsd_fixup),
.sv_sendsig = sendsig,
@@ -100,8 +98,6 @@
struct sysentvec elf64_freebsd_sysvec_v2 = {
.sv_size = SYS_MAXSYSCALL,
.sv_table = sysent,
- .sv_errsize = 0,
- .sv_errtbl = NULL,
.sv_transtrap = NULL,
.sv_fixup = __elfN(freebsd_fixup),
.sv_sendsig = sendsig,
Index: head/sys/riscv/riscv/elf_machdep.c
===================================================================
--- head/sys/riscv/riscv/elf_machdep.c
+++ head/sys/riscv/riscv/elf_machdep.c
@@ -65,8 +65,6 @@
struct sysentvec elf64_freebsd_sysvec = {
.sv_size = SYS_MAXSYSCALL,
.sv_table = sysent,
- .sv_errsize = 0,
- .sv_errtbl = NULL,
.sv_transtrap = NULL,
.sv_fixup = __elfN(freebsd_fixup),
.sv_sendsig = sendsig,
Index: head/sys/sys/sysent.h
===================================================================
--- head/sys/sys/sysent.h
+++ head/sys/sys/sysent.h
@@ -102,8 +102,6 @@
struct sysentvec {
int sv_size; /* number of entries */
struct sysent *sv_table; /* pointer to sysent */
- int sv_errsize; /* size of errno translation table */
- const int *sv_errtbl; /* errno translation table */
int (*sv_transtrap)(int, int);
/* translate trap-to-signal mapping */
int (*sv_fixup)(uintptr_t *, struct image_params *);
@@ -158,8 +156,6 @@
#define SV_ASLR 0x080000 /* ASLR allowed. */
#define SV_ABI_MASK 0xff
-#define SV_ABI_ERRNO(p, e) ((p)->p_sysent->sv_errsize <= 0 ? e : \
- ((e) >= (p)->p_sysent->sv_errsize ? -1 : (p)->p_sysent->sv_errtbl[e]))
#define SV_PROC_FLAG(p, x) ((p)->p_sysent->sv_flags & (x))
#define SV_PROC_ABI(p) ((p)->p_sysent->sv_flags & SV_ABI_MASK)
#define SV_CURPROC_FLAG(x) SV_PROC_FLAG(curproc, x)
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Mon, Feb 10, 3:55 AM (4 h, 10 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
16570058
Default Alt Text
D26388.diff (11 KB)
Attached To
Mode
D26388: Get rid of sv_errtbl and SV_ABI_ERRNO()
Attached
Detach File
Event Timeline
Log In to Comment