Home | History | Annotate | Line # | Download | only in libsys_linux
      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