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