0.7.2-alt1
[qemu] / kqemu / kqemu-kernel.h
1 /*
2  * KQEMU kernel API
3  * Copyright (c) 2004-2005 Fabrice Bellard
4  */
5 #ifndef KQEMU_KERNEL_H
6 #define KQEMU_KERNEL_H
7
8 #include "kqemu.h"
9
10 struct kqemu_state;
11
12 #define CDECL __attribute__((regparm(0)))
13
14 struct kqemu_state * CDECL kqemu_init(struct kqemu_init *d, int max_locked_pages);
15 struct kqemu_cpu_state * CDECL kqemu_get_cpu_state(struct kqemu_state *s);
16 long CDECL kqemu_exec(struct kqemu_state *s);
17 void CDECL kqemu_delete(struct kqemu_state *s);
18
19 /* callbacks */
20 struct kqemu_page; /* opaque data for host page */
21 struct kqemu_user_page; /* opaque data for host user page */
22
23 struct kqemu_user_page *CDECL kqemu_lock_user_page(unsigned long *ppage_index,
24                                                    unsigned long user_addr);
25 void CDECL kqemu_unlock_user_page(struct kqemu_user_page *page);
26
27 struct kqemu_page *CDECL kqemu_alloc_zeroed_page(unsigned long *ppage_index);
28 void CDECL kqemu_free_page(struct kqemu_page *page);
29 void * CDECL kqemu_page_kaddr(struct kqemu_page *page);
30
31 void * CDECL kqemu_vmalloc(unsigned int size);
32 void CDECL kqemu_vfree(void *ptr);
33 unsigned long CDECL kqemu_vmalloc_to_phys(const void *vaddr);
34
35 void * CDECL kqemu_io_map(unsigned long page_index, unsigned int size);
36 void CDECL kqemu_io_unmap(void *ptr, unsigned int size);
37
38 int CDECL kqemu_schedule(void);
39
40 void CDECL kqemu_log(const char *fmt, ...);
41
42 #endif /* KQEMU_KERNEL_H */