1 /* $NetBSD: sys_linux_component.c,v 1.7 2019/01/27 09:19:37 rin Exp $ */ 2 3 #include <sys/cdefs.h> 4 __KERNEL_RCSID(0, "$NetBSD: sys_linux_component.c,v 1.7 2019/01/27 09:19:37 rin Exp $"); 5 6 #include <sys/param.h> 7 #include <sys/proc.h> 8 9 #include <compat/linux/common/linux_errno.h> 10 11 #include <uvm/uvm_extern.h> 12 13 #include <rump-sys/kern.h> 14 15 #include "rump_linux_syscall.h" 16 17 extern struct sysent rump_linux_sysent[]; 18 extern const uint32_t rump_linux_sysent_nomodbits[]; 19 20 #ifdef __HAVE_SYSCALL_INTERN 21 static void 22 rumplinux_syscall_intern(struct proc *p) 23 { 24 25 p->p_emuldata = __UNCONST(native_to_linux_errno); 26 } 27 #endif 28 29 struct emul emul_rump_sys_linux = { 30 .e_name = "linux-rump", 31 .e_sysent = rump_linux_sysent, 32 .e_nomodbits = rump_linux_sysent_nomodbits, 33 #ifndef __HAVE_MINIMAL_EMUL 34 .e_nsysent = RUMP_LINUX_SYS_NSYSENT, 35 .e_errno = native_to_linux_errno, 36 #endif 37 .e_vm_default_addr = uvm_default_mapaddr, 38 #ifdef __HAVE_SYSCALL_INTERN 39 .e_syscall_intern = rumplinux_syscall_intern, 40 #endif 41 }; 42 43 RUMP_COMPONENT(RUMP_COMPONENT_KERN) 44 { 45 extern struct emul *emul_default; 46 47 emul_default = &emul_rump_sys_linux; 48 } 49 50 #include <compat/linux/common/linux_machdep.h> 51 52 dev_t 53 linux_fakedev(dev_t in, int raw) 54 { 55 56 /* I don't really think it matters what we return here */ 57 return in; 58 } 59 60 /* 61 * XXX: the linux emulation code is not split into factions 62 */ 63 void rumplinux__stub(void); 64 void rumplinux__stub(void) {panic("unavailable");} 65 66 /* vm-related */ 67 __weak_alias(sys_mmap,rumplinux__stub); 68 __weak_alias(vm_map_unlock,rumplinux__stub); 69 __weak_alias(uvm_map_lookup_entry,rumplinux__stub); 70 __weak_alias(sys_obreak,rumplinux__stub); 71 __weak_alias(vm_map_lock,rumplinux__stub); 72 __weak_alias(uvm_mremap,rumplinux__stub); 73 74 /* signal.c */ 75 __weak_alias(sigaction1,rumplinux__stub); 76 __weak_alias(kpsignal2,rumplinux__stub); 77 __weak_alias(sys_kill,rumplinux__stub); 78 __weak_alias(sigsuspend1,rumplinux__stub); 79 __weak_alias(sigtimedwait1,rumplinux__stub); 80 __weak_alias(lwp_find,rumplinux__stub); 81 82 /* misc */ 83 __weak_alias(linux_machdepioctl,rumplinux__stub); 84 __weak_alias(linux_ioctl_sg,rumplinux__stub); 85 __weak_alias(oss_ioctl_mixer,rumplinux__stub); 86 __weak_alias(oss_ioctl_sequencer,rumplinux__stub); 87 __weak_alias(oss_ioctl_audio,rumplinux__stub); 88 __weak_alias(rusage_to_rusage50,rumplinux__stub); 89 __weak_alias(do_sys_wait,rumplinux__stub); 90 91 /* arch-specific */ 92 __weak_alias(compat_offseterr,rumplinux__stub); 93 __weak_alias(linux_sys_ptrace_arch,rumplinux__stub); 94 95 #ifdef __i386__ 96 const char * 97 linux_get_uname_arch(void) 98 { 99 100 return MACHINE_ARCH; 101 } 102 #endif /* __i386__ */ 103