Changeset View
Changeset View
Standalone View
Standalone View
head/sys/i386/linux/linux_sysvec.c
Show First 20 Lines • Show All 120 Lines • ▼ Show 20 Lines | |||||
static int linux_szplatform; | static int linux_szplatform; | ||||
const char *linux_kplatform; | const char *linux_kplatform; | ||||
static eventhandler_tag linux_exit_tag; | static eventhandler_tag linux_exit_tag; | ||||
static eventhandler_tag linux_exec_tag; | static eventhandler_tag linux_exec_tag; | ||||
static eventhandler_tag linux_thread_dtor_tag; | static eventhandler_tag linux_thread_dtor_tag; | ||||
/* | |||||
* 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 | #define LINUX_T_UNKNOWN 255 | ||||
static int _bsd_to_linux_trapcode[] = { | static int _bsd_to_linux_trapcode[] = { | ||||
LINUX_T_UNKNOWN, /* 0 */ | LINUX_T_UNKNOWN, /* 0 */ | ||||
6, /* 1 T_PRIVINFLT */ | 6, /* 1 T_PRIVINFLT */ | ||||
LINUX_T_UNKNOWN, /* 2 */ | LINUX_T_UNKNOWN, /* 2 */ | ||||
3, /* 3 T_BPTFLT */ | 3, /* 3 T_BPTFLT */ | ||||
LINUX_T_UNKNOWN, /* 4 */ | LINUX_T_UNKNOWN, /* 4 */ | ||||
LINUX_T_UNKNOWN, /* 5 */ | LINUX_T_UNKNOWN, /* 5 */ | ||||
▲ Show 20 Lines • Show All 751 Lines • ▼ Show 20 Lines | linux_get_machine(const char **dst) | ||||
} | } | ||||
} | } | ||||
struct sysentvec linux_sysvec = { | struct sysentvec linux_sysvec = { | ||||
.sv_size = LINUX_SYS_MAXSYSCALL, | .sv_size = LINUX_SYS_MAXSYSCALL, | ||||
.sv_table = linux_sysent, | .sv_table = linux_sysent, | ||||
.sv_mask = 0, | .sv_mask = 0, | ||||
.sv_errsize = ELAST + 1, | .sv_errsize = ELAST + 1, | ||||
.sv_errtbl = bsd_to_linux_errno, | .sv_errtbl = bsd_to_linux_errno_generic, | ||||
.sv_transtrap = translate_traps, | .sv_transtrap = translate_traps, | ||||
.sv_fixup = linux_fixup, | .sv_fixup = linux_fixup, | ||||
.sv_sendsig = linux_sendsig, | .sv_sendsig = linux_sendsig, | ||||
.sv_sigcode = &_binary_linux_locore_o_start, | .sv_sigcode = &_binary_linux_locore_o_start, | ||||
.sv_szsigcode = &linux_szsigcode, | .sv_szsigcode = &linux_szsigcode, | ||||
.sv_name = "Linux a.out", | .sv_name = "Linux a.out", | ||||
.sv_coredump = NULL, | .sv_coredump = NULL, | ||||
.sv_imgact_try = exec_linux_imgact_try, | .sv_imgact_try = exec_linux_imgact_try, | ||||
Show All 20 Lines | |||||
}; | }; | ||||
INIT_SYSENTVEC(aout_sysvec, &linux_sysvec); | INIT_SYSENTVEC(aout_sysvec, &linux_sysvec); | ||||
struct sysentvec elf_linux_sysvec = { | struct sysentvec elf_linux_sysvec = { | ||||
.sv_size = LINUX_SYS_MAXSYSCALL, | .sv_size = LINUX_SYS_MAXSYSCALL, | ||||
.sv_table = linux_sysent, | .sv_table = linux_sysent, | ||||
.sv_mask = 0, | .sv_mask = 0, | ||||
.sv_errsize = ELAST + 1, | .sv_errsize = ELAST + 1, | ||||
.sv_errtbl = bsd_to_linux_errno, | .sv_errtbl = bsd_to_linux_errno_generic, | ||||
.sv_transtrap = translate_traps, | .sv_transtrap = translate_traps, | ||||
.sv_fixup = elf_linux_fixup, | .sv_fixup = elf_linux_fixup, | ||||
.sv_sendsig = linux_sendsig, | .sv_sendsig = linux_sendsig, | ||||
.sv_sigcode = &_binary_linux_locore_o_start, | .sv_sigcode = &_binary_linux_locore_o_start, | ||||
.sv_szsigcode = &linux_szsigcode, | .sv_szsigcode = &linux_szsigcode, | ||||
.sv_name = "Linux ELF", | .sv_name = "Linux ELF", | ||||
.sv_coredump = elf32_coredump, | .sv_coredump = elf32_coredump, | ||||
.sv_imgact_try = exec_linux_imgact_try, | .sv_imgact_try = exec_linux_imgact_try, | ||||
▲ Show 20 Lines • Show All 206 Lines • Show Last 20 Lines |