]>
Commit | Line | Data |
---|---|---|
1f070489 IM |
1 | /* |
2 | * QEMU Host Memory Backend | |
3 | * | |
4 | * Copyright (C) 2013-2014 Red Hat Inc | |
5 | * | |
6 | * Authors: | |
7 | * Igor Mammedov <[email protected]> | |
8 | * | |
9 | * This work is licensed under the terms of the GNU GPL, version 2 or later. | |
10 | * See the COPYING file in the top-level directory. | |
11 | */ | |
121d0712 MA |
12 | |
13 | #ifndef SYSEMU_HOSTMEM_H | |
14 | #define SYSEMU_HOSTMEM_H | |
1f070489 | 15 | |
4cf1b76b | 16 | #include "sysemu/sysemu.h" /* for MAX_NODES */ |
112ed241 | 17 | #include "qapi/qapi-types-misc.h" |
1f070489 | 18 | #include "qom/object.h" |
1f070489 | 19 | #include "exec/memory.h" |
4cf1b76b | 20 | #include "qemu/bitmap.h" |
1f070489 IM |
21 | |
22 | #define TYPE_MEMORY_BACKEND "memory-backend" | |
23 | #define MEMORY_BACKEND(obj) \ | |
24 | OBJECT_CHECK(HostMemoryBackend, (obj), TYPE_MEMORY_BACKEND) | |
25 | #define MEMORY_BACKEND_GET_CLASS(obj) \ | |
26 | OBJECT_GET_CLASS(HostMemoryBackendClass, (obj), TYPE_MEMORY_BACKEND) | |
27 | #define MEMORY_BACKEND_CLASS(klass) \ | |
28 | OBJECT_CLASS_CHECK(HostMemoryBackendClass, (klass), TYPE_MEMORY_BACKEND) | |
29 | ||
30 | typedef struct HostMemoryBackend HostMemoryBackend; | |
31 | typedef struct HostMemoryBackendClass HostMemoryBackendClass; | |
32 | ||
33 | /** | |
34 | * HostMemoryBackendClass: | |
35 | * @parent_class: opaque parent class container | |
36 | */ | |
37 | struct HostMemoryBackendClass { | |
38 | ObjectClass parent_class; | |
bd9262d9 HT |
39 | |
40 | void (*alloc)(HostMemoryBackend *backend, Error **errp); | |
1f070489 IM |
41 | }; |
42 | ||
43 | /** | |
44 | * @HostMemoryBackend | |
45 | * | |
46 | * @parent: opaque parent object container | |
47 | * @size: amount of memory backend provides | |
1f070489 IM |
48 | * @mr: MemoryRegion representing host memory belonging to backend |
49 | */ | |
50 | struct HostMemoryBackend { | |
51 | /* private */ | |
52 | Object parent; | |
53 | ||
54 | /* protected */ | |
55 | uint64_t size; | |
605d0a94 | 56 | bool merge, dump; |
06329cce | 57 | bool prealloc, force_prealloc, is_mapped, share; |
4cf1b76b HT |
58 | DECLARE_BITMAP(host_nodes, MAX_NODES + 1); |
59 | HostMemPolicy policy; | |
1f070489 IM |
60 | |
61 | MemoryRegion mr; | |
62 | }; | |
63 | ||
4728b574 | 64 | bool host_memory_backend_mr_inited(HostMemoryBackend *backend); |
7943e97b | 65 | MemoryRegion *host_memory_backend_get_memory(HostMemoryBackend *backend); |
1f070489 | 66 | |
2aece63c XG |
67 | void host_memory_backend_set_mapped(HostMemoryBackend *backend, bool mapped); |
68 | bool host_memory_backend_is_mapped(HostMemoryBackend *backend); | |
2b108085 DG |
69 | size_t host_memory_backend_pagesize(HostMemoryBackend *memdev); |
70 | ||
1f070489 | 71 | #endif |