2 * Thread-safe guest to host memory mapping
4 * Copyright 2012 Red Hat, Inc. and/or its affiliates
7 * Stefan Hajnoczi <stefanha@redhat.com>
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.
17 #include "exec/memory.h"
18 #include "qemu/thread.h"
28 /* The listener is invoked when regions change and a new list of regions is
29 * built up completely before they are installed.
31 MemoryListener listener
;
32 HostMemRegion
*new_regions
;
33 size_t num_new_regions
;
35 /* Current regions are accessed from multiple threads either to lookup
36 * addresses or to install a new list of regions. The lock protects the
37 * pointer and the regions.
39 QemuMutex current_regions_lock
;
40 HostMemRegion
*current_regions
;
41 size_t num_current_regions
;
44 void hostmem_init(HostMem
*hostmem
);
45 void hostmem_finalize(HostMem
*hostmem
);
48 * Map a guest physical address to a pointer
50 * Note that there is map/unmap mechanism here. The caller must ensure that
51 * mapped memory is no longer used across events like hot memory unplug. This
52 * can be done with other mechanisms like bdrv_drain_all() that quiesce
55 void *hostmem_lookup(HostMem
*hostmem
, hwaddr phys
, hwaddr len
, bool is_write
);
57 #endif /* HOSTMEM_H */