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