vmm: refactor userspace's emsr_fakewrite()
[akaros.git] / user / vmm / include / vmm / linuxemu.h
1 #pragma once
2
3 typedef bool (*dune_syscall_t)(struct vm_trapframe *);
4
5 struct dune_sys_table_entry {
6         dune_syscall_t call;
7         const char *name;
8 };
9
10 struct linux_stat_amd64 {
11         uint64_t  st_dev;
12         uint64_t  st_ino;
13         uint64_t  st_nlink;
14         uint32_t  st_mode;
15         uint32_t  st_uid;
16         uint32_t  st_gid;
17         int32_t   pad;
18         uint64_t  st_rdev;
19         int64_t   st_size;
20         int64_t   st_blksize;
21         int64_t   st_blocks;
22         struct timespec st_atim;
23         struct timespec st_mtim;
24         struct timespec st_ctim;
25         int64_t  unused[3];
26 };
27
28 #define DUNE_MAX_NUM_SYSCALLS 1024
29
30 extern struct dune_sys_table_entry dune_syscall_table[];
31
32 bool init_linuxemu(void);
33 void init_lemu_logging(int logging_level);
34 void destroy_lemu_logging(void);
35 void lemuprint(const uint32_t tid, uint64_t syscall_number,
36                const bool isError, const char *fmt, ...);
37
38 bool dune_sys_write(struct vm_trapframe *tf);
39 bool dune_sys_read(struct vm_trapframe *tf);