memory: Document flatview_for_each_range()

Add a documentation comment describing flatview_for_each_range().

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-id: 20210318174823.18066-3-peter.maydell@linaro.org
This commit is contained in:
Peter Maydell 2021-03-18 17:48:20 +00:00
parent d1e8cf77f1
commit a5e32ec1ed
1 changed files with 24 additions and 2 deletions

View File

@ -776,11 +776,33 @@ static inline FlatView *address_space_to_flatview(AddressSpace *as)
return qatomic_rcu_read(&as->current_map);
}
/**
* typedef flatview_cb: callback for flatview_for_each_range()
*
* @start: start address of the range within the FlatView
* @len: length of the range in bytes
* @mr: MemoryRegion covering this range
* @opaque: data pointer passed to flatview_for_each_range()
*
* Returns: true to stop the iteration, false to keep going.
*/
typedef bool (*flatview_cb)(Int128 start,
Int128 len,
const MemoryRegion*, void*);
const MemoryRegion *mr,
void *opaque);
void flatview_for_each_range(FlatView *fv, flatview_cb cb , void *opaque);
/**
* flatview_for_each_range: Iterate through a FlatView
* @fv: the FlatView to iterate through
* @cb: function to call for each range
* @opaque: opaque data pointer to pass to @cb
*
* A FlatView is made up of a list of non-overlapping ranges, each of
* which is a slice of a MemoryRegion. This function iterates through
* each range in @fv, calling @cb. The callback function can terminate
* iteration early by returning 'true'.
*/
void flatview_for_each_range(FlatView *fv, flatview_cb cb, void *opaque);
/**
* struct MemoryRegionSection: describes a fragment of a #MemoryRegion