master
c 48 lines 1.1 KB
Raw
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 #include "qemu/osdep.h"
3 #include "qom/object.h"
4 #include "glib.h"
5 #include "system/memory.h"
6
7 RamDiscardManager *memory_region_get_ram_discard_manager(MemoryRegion *mr)
8 {
9 return mr->rdm;
10 }
11
12 int memory_region_add_ram_discard_source(MemoryRegion *mr,
13 RamDiscardSource *source)
14 {
15 if (!mr->rdm) {
16 mr->rdm = ram_discard_manager_new(mr);
17 }
18 return ram_discard_manager_add_source(mr->rdm, source);
19 }
20
21 int memory_region_del_ram_discard_source(MemoryRegion *mr,
22 RamDiscardSource *source)
23 {
24 RamDiscardManager *rdm = mr->rdm;
25
26 if (!rdm) {
27 return 0;
28 }
29
30 return ram_discard_manager_del_source(rdm, source);
31 }
32
33 uint64_t memory_region_size(const MemoryRegion *mr)
34 {
35 return int128_get64(mr->size);
36 }
37
38 MemoryRegionSection *memory_region_section_new_copy(MemoryRegionSection *s)
39 {
40 MemoryRegionSection *copy = g_new(MemoryRegionSection, 1);
41 *copy = *s;
42 return copy;
43 }
44
45 void memory_region_section_free_copy(MemoryRegionSection *s)
46 {
47 g_free(s);
48 }