sys_linux_component.c revision 1.6
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
20extern struct sysent rump_linux_sysent[];
21extern const uint32_t rump_linux_sysent_nomodbits[];
22
23#ifdef __HAVE_SYSCALL_INTERN
24static void
25rumplinux_syscall_intern(struct proc *p)
26{
27
28	p->p_emuldata = __UNCONST(native_to_linux_errno);
29}
30#endif
31
32struct 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
46RUMP_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
55dev_t
56linux_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 */
66void rumplinux__stub(void);
67void 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__
99const char *
100linux_get_uname_arch(void)
101{
102
103	return MACHINE_ARCH;
104}
105#endif /* __i386__ */
106