diff options
author | Avi Kivity <avi@redhat.com> | 2011-09-14 11:54:58 +0300 |
---|---|---|
committer | Avi Kivity <avi@redhat.com> | 2011-12-04 19:00:33 +0200 |
commit | 6bba19ba4e2b8c89496569439ca38a328cf29a77 (patch) | |
tree | 3c00c804e3217e72f440cf1bb154864b68ace053 /memory.h | |
parent | f44336c594c7e7887ee43ece3b53ba68b827fd1d (diff) | |
download | hqemu-6bba19ba4e2b8c89496569439ca38a328cf29a77.zip hqemu-6bba19ba4e2b8c89496569439ca38a328cf29a77.tar.gz |
memory: introduce memory_region_set_enabled()
This allows users to disable a memory region without removing
it from the hierarchy, simplifying the implementation of
memory routers.
Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'memory.h')
-rw-r--r-- | memory.h | 17 |
1 files changed, 17 insertions, 0 deletions
@@ -123,6 +123,7 @@ struct MemoryRegion { bool terminates; bool readable; bool readonly; /* For RAM regions */ + bool enabled; MemoryRegion *alias; target_phys_addr_t alias_offset; unsigned priority; @@ -501,6 +502,22 @@ void memory_region_add_subregion_overlap(MemoryRegion *mr, void memory_region_del_subregion(MemoryRegion *mr, MemoryRegion *subregion); + +/* + * memory_region_set_enabled: dynamically enable or disable a region + * + * Enables or disables a memory region. A disabled memory region + * ignores all accesses to itself and its subregions. It does not + * obscure sibling subregions with lower priority - it simply behaves as + * if it was removed from the hierarchy. + * + * Regions default to being enabled. + * + * @mr: the region to be updated + * @enabled: whether to enable or disable the region + */ +void memory_region_set_enabled(MemoryRegion *mr, bool enabled); + /* Start a transaction; changes will be accumulated and made visible only * when the transaction ends. */ |