memory: add memory_region_is_mapped() API
which allows to check if MemoryRegion is already mapped. Signed-off-by: Igor Mammedov <imammedo@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
10b7e74bf2
commit
eed2bacfd2
|
@ -847,6 +847,14 @@ void memory_region_set_alias_offset(MemoryRegion *mr,
|
||||||
*/
|
*/
|
||||||
bool memory_region_present(MemoryRegion *container, hwaddr addr);
|
bool memory_region_present(MemoryRegion *container, hwaddr addr);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* memory_region_is_mapped: returns true if #MemoryRegion is mapped
|
||||||
|
* into any address space.
|
||||||
|
*
|
||||||
|
* @mr: a #MemoryRegion which should be checked if it's mapped
|
||||||
|
*/
|
||||||
|
bool memory_region_is_mapped(MemoryRegion *mr);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* memory_region_find: translate an address/size relative to a
|
* memory_region_find: translate an address/size relative to a
|
||||||
* MemoryRegion into a #MemoryRegionSection.
|
* MemoryRegion into a #MemoryRegionSection.
|
||||||
|
|
10
memory.c
10
memory.c
|
@ -493,7 +493,7 @@ static AddressSpace *memory_region_to_address_space(MemoryRegion *mr)
|
||||||
return as;
|
return as;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
abort();
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Render a memory region into the global view. Ranges in @view obscure
|
/* Render a memory region into the global view. Ranges in @view obscure
|
||||||
|
@ -1593,6 +1593,11 @@ bool memory_region_present(MemoryRegion *container, hwaddr addr)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool memory_region_is_mapped(MemoryRegion *mr)
|
||||||
|
{
|
||||||
|
return mr->container ? true : false;
|
||||||
|
}
|
||||||
|
|
||||||
MemoryRegionSection memory_region_find(MemoryRegion *mr,
|
MemoryRegionSection memory_region_find(MemoryRegion *mr,
|
||||||
hwaddr addr, uint64_t size)
|
hwaddr addr, uint64_t size)
|
||||||
{
|
{
|
||||||
|
@ -1610,6 +1615,9 @@ MemoryRegionSection memory_region_find(MemoryRegion *mr,
|
||||||
}
|
}
|
||||||
|
|
||||||
as = memory_region_to_address_space(root);
|
as = memory_region_to_address_space(root);
|
||||||
|
if (!as) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
range = addrrange_make(int128_make64(addr), int128_make64(size));
|
range = addrrange_make(int128_make64(addr), int128_make64(size));
|
||||||
|
|
||||||
view = address_space_get_flatview(as);
|
view = address_space_get_flatview(as);
|
||||||
|
|
Loading…
Reference in a new issue