11.7Srin/* $NetBSD: sys_linux_component.c,v 1.7 2019/01/27 09:19:37 rin Exp $ */ 21.6Spgoyette 31.6Spgoyette#include <sys/cdefs.h> 41.7Srin__KERNEL_RCSID(0, "$NetBSD: sys_linux_component.c,v 1.7 2019/01/27 09:19:37 rin Exp $"); 51.1Spooka 61.1Spooka#include <sys/param.h> 71.1Spooka#include <sys/proc.h> 81.1Spooka 91.1Spooka#include <compat/linux/common/linux_errno.h> 101.1Spooka 111.1Spooka#include <uvm/uvm_extern.h> 121.1Spooka 131.3Spooka#include <rump-sys/kern.h> 141.1Spooka 151.1Spooka#include "rump_linux_syscall.h" 161.1Spooka 171.1Spookaextern struct sysent rump_linux_sysent[]; 181.4Spgoyetteextern const uint32_t rump_linux_sysent_nomodbits[]; 191.1Spooka 201.1Spooka#ifdef __HAVE_SYSCALL_INTERN 211.1Spookastatic void 221.1Spookarumplinux_syscall_intern(struct proc *p) 231.1Spooka{ 241.1Spooka 251.1Spooka p->p_emuldata = __UNCONST(native_to_linux_errno); 261.1Spooka} 271.1Spooka#endif 281.1Spooka 291.1Spookastruct emul emul_rump_sys_linux = { 301.1Spooka .e_name = "linux-rump", 311.1Spooka .e_sysent = rump_linux_sysent, 321.4Spgoyette .e_nomodbits = rump_linux_sysent_nomodbits, 331.1Spooka#ifndef __HAVE_MINIMAL_EMUL 341.1Spooka .e_nsysent = RUMP_LINUX_SYS_NSYSENT, 351.1Spooka .e_errno = native_to_linux_errno, 361.1Spooka#endif 371.1Spooka .e_vm_default_addr = uvm_default_mapaddr, 381.1Spooka#ifdef __HAVE_SYSCALL_INTERN 391.1Spooka .e_syscall_intern = rumplinux_syscall_intern, 401.1Spooka#endif 411.1Spooka}; 421.1Spooka 431.1SpookaRUMP_COMPONENT(RUMP_COMPONENT_KERN) 441.1Spooka{ 451.1Spooka extern struct emul *emul_default; 461.1Spooka 471.1Spooka emul_default = &emul_rump_sys_linux; 481.1Spooka} 491.1Spooka 501.1Spooka#include <compat/linux/common/linux_machdep.h> 511.1Spooka 521.1Spookadev_t 531.1Spookalinux_fakedev(dev_t in, int raw) 541.1Spooka{ 551.1Spooka 561.1Spooka /* I don't really think it matters what we return here */ 571.1Spooka return in; 581.1Spooka} 591.1Spooka 601.1Spooka/* 611.1Spooka * XXX: the linux emulation code is not split into factions 621.1Spooka */ 631.1Spookavoid rumplinux__stub(void); 641.1Spookavoid rumplinux__stub(void) {panic("unavailable");} 651.1Spooka 661.1Spooka/* vm-related */ 671.1Spooka__weak_alias(sys_mmap,rumplinux__stub); 681.1Spooka__weak_alias(vm_map_unlock,rumplinux__stub); 691.1Spooka__weak_alias(uvm_map_lookup_entry,rumplinux__stub); 701.1Spooka__weak_alias(sys_obreak,rumplinux__stub); 711.1Spooka__weak_alias(vm_map_lock,rumplinux__stub); 721.1Spooka__weak_alias(uvm_mremap,rumplinux__stub); 731.1Spooka 741.1Spooka/* signal.c */ 751.1Spooka__weak_alias(sigaction1,rumplinux__stub); 761.1Spooka__weak_alias(kpsignal2,rumplinux__stub); 771.1Spooka__weak_alias(sys_kill,rumplinux__stub); 781.1Spooka__weak_alias(sigsuspend1,rumplinux__stub); 791.1Spooka__weak_alias(sigtimedwait1,rumplinux__stub); 801.1Spooka__weak_alias(lwp_find,rumplinux__stub); 811.1Spooka 821.1Spooka/* misc */ 831.1Spooka__weak_alias(linux_machdepioctl,rumplinux__stub); 841.1Spooka__weak_alias(linux_ioctl_sg,rumplinux__stub); 851.1Spooka__weak_alias(oss_ioctl_mixer,rumplinux__stub); 861.1Spooka__weak_alias(oss_ioctl_sequencer,rumplinux__stub); 871.1Spooka__weak_alias(oss_ioctl_audio,rumplinux__stub); 881.1Spooka__weak_alias(rusage_to_rusage50,rumplinux__stub); 891.1Spooka__weak_alias(do_sys_wait,rumplinux__stub); 901.1Spooka 911.1Spooka/* arch-specific */ 921.1Spooka__weak_alias(compat_offseterr,rumplinux__stub); 931.1Spooka__weak_alias(linux_sys_ptrace_arch,rumplinux__stub); 941.1Spooka 951.1Spooka#ifdef __i386__ 961.1Spookaconst char * 971.1Spookalinux_get_uname_arch(void) 981.1Spooka{ 991.1Spooka 1001.1Spooka return MACHINE_ARCH; 1011.1Spooka} 1021.1Spooka#endif /* __i386__ */ 103