diff options
Diffstat (limited to 'tools/testing/selftests/kvm/lib/kvm_util_internal.h')
-rw-r--r-- | tools/testing/selftests/kvm/lib/kvm_util_internal.h | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/tools/testing/selftests/kvm/lib/kvm_util_internal.h b/tools/testing/selftests/kvm/lib/kvm_util_internal.h new file mode 100644 index 000000000000..a0bd1980c81c --- /dev/null +++ b/tools/testing/selftests/kvm/lib/kvm_util_internal.h | |||
@@ -0,0 +1,67 @@ | |||
1 | /* | ||
2 | * tools/testing/selftests/kvm/lib/kvm_util.c | ||
3 | * | ||
4 | * Copyright (C) 2018, Google LLC. | ||
5 | * | ||
6 | * This work is licensed under the terms of the GNU GPL, version 2. | ||
7 | */ | ||
8 | |||
9 | #ifndef KVM_UTIL_INTERNAL_H | ||
10 | #define KVM_UTIL_INTERNAL_H 1 | ||
11 | |||
12 | #include "sparsebit.h" | ||
13 | |||
14 | #ifndef BITS_PER_BYTE | ||
15 | #define BITS_PER_BYTE 8 | ||
16 | #endif | ||
17 | |||
18 | #ifndef BITS_PER_LONG | ||
19 | #define BITS_PER_LONG (BITS_PER_BYTE * sizeof(long)) | ||
20 | #endif | ||
21 | |||
22 | #define DIV_ROUND_UP(n, d) (((n) + (d) - 1) / (d)) | ||
23 | #define BITS_TO_LONGS(nr) DIV_ROUND_UP(nr, BITS_PER_LONG) | ||
24 | |||
25 | /* Concrete definition of struct kvm_vm. */ | ||
26 | struct userspace_mem_region { | ||
27 | struct userspace_mem_region *next, *prev; | ||
28 | struct kvm_userspace_memory_region region; | ||
29 | struct sparsebit *unused_phy_pages; | ||
30 | int fd; | ||
31 | off_t offset; | ||
32 | void *host_mem; | ||
33 | void *mmap_start; | ||
34 | size_t mmap_size; | ||
35 | }; | ||
36 | |||
37 | struct vcpu { | ||
38 | struct vcpu *next, *prev; | ||
39 | uint32_t id; | ||
40 | int fd; | ||
41 | struct kvm_run *state; | ||
42 | }; | ||
43 | |||
44 | struct kvm_vm { | ||
45 | int mode; | ||
46 | int fd; | ||
47 | unsigned int page_size; | ||
48 | unsigned int page_shift; | ||
49 | uint64_t max_gfn; | ||
50 | struct vcpu *vcpu_head; | ||
51 | struct userspace_mem_region *userspace_mem_region_head; | ||
52 | struct sparsebit *vpages_valid; | ||
53 | struct sparsebit *vpages_mapped; | ||
54 | bool pgd_created; | ||
55 | vm_paddr_t pgd; | ||
56 | }; | ||
57 | |||
58 | struct vcpu *vcpu_find(struct kvm_vm *vm, | ||
59 | uint32_t vcpuid); | ||
60 | void vcpu_setup(struct kvm_vm *vm, int vcpuid); | ||
61 | void virt_dump(FILE *stream, struct kvm_vm *vm, uint8_t indent); | ||
62 | void regs_dump(FILE *stream, struct kvm_regs *regs, | ||
63 | uint8_t indent); | ||
64 | void sregs_dump(FILE *stream, struct kvm_sregs *sregs, | ||
65 | uint8_t indent); | ||
66 | |||
67 | #endif | ||