On 7 May 2013 15:16, Paolo Bonzini <pbonz...@redhat.com> wrote: > memory_region_find() is similar to registering a MemoryListener and > checking for the MemoryRegionSections that come from a particular > region. There is no reason for this to be limited to a root memory > region. > > Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> > --- > include/exec/memory.h | 13 +++++++------ > memory.c | 20 +++++++++++++++----- > 2 files changed, 22 insertions(+), 11 deletions(-) > > diff --git a/include/exec/memory.h b/include/exec/memory.h > index 9e88320..efe210b 100644 > --- a/include/exec/memory.h > +++ b/include/exec/memory.h > @@ -725,17 +725,18 @@ void memory_region_set_alias_offset(MemoryRegion *mr, > * > * Returns a #MemoryRegionSection that describes a contiguous overlap. > * It will have the following characteristics: > - * .@offset_within_address_space >= @addr > - * .@offset_within_address_space + .@size <= @addr + @size > * .@size = 0 iff no overlap was found > * .@mr is non-%NULL iff an overlap was found > * > - * @address_space: a top-level (i.e. parentless) region that contains > - * the region to be found > - * @addr: start of the area within @address_space to be searched > + * If @mr is parent-less, > + * .@offset_within_address_space >= @addr > + * .@offset_within_address_space + .@size <= @addr + @size
Shouldn't we also say something about what you get back in the "@mr is not parentless" case? > + * > + * @mr: a (possibly indirect) parent that contains the region to be found > + * @addr: start of the area within @as to be searched There's no @as parameter... > * @size: size of the area to be searched > */ > -MemoryRegionSection memory_region_find(MemoryRegion *address_space, > +MemoryRegionSection memory_region_find(MemoryRegion *mr, > hwaddr addr, uint64_t size); thanks -- PMM