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