memory: Add offset_in_region to flatview_cb arguments
The function flatview_for_each_range() calls a callback for each range in a FlatView. Currently the callback gets the start and length of the range and the MemoryRegion involved, but not the offset within the MemoryRegion. Add this to the callback's arguments; we're going to want it for a new use in the next commit. 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-4-peter.maydell@linaro.org
This commit is contained in:
parent
a5e32ec1ed
commit
b3566001d4
@ -782,6 +782,7 @@ static inline FlatView *address_space_to_flatview(AddressSpace *as)
|
|||||||
* @start: start address of the range within the FlatView
|
* @start: start address of the range within the FlatView
|
||||||
* @len: length of the range in bytes
|
* @len: length of the range in bytes
|
||||||
* @mr: MemoryRegion covering this range
|
* @mr: MemoryRegion covering this range
|
||||||
|
* @offset_in_region: offset of the first byte of the range within @mr
|
||||||
* @opaque: data pointer passed to flatview_for_each_range()
|
* @opaque: data pointer passed to flatview_for_each_range()
|
||||||
*
|
*
|
||||||
* Returns: true to stop the iteration, false to keep going.
|
* Returns: true to stop the iteration, false to keep going.
|
||||||
@ -789,6 +790,7 @@ static inline FlatView *address_space_to_flatview(AddressSpace *as)
|
|||||||
typedef bool (*flatview_cb)(Int128 start,
|
typedef bool (*flatview_cb)(Int128 start,
|
||||||
Int128 len,
|
Int128 len,
|
||||||
const MemoryRegion *mr,
|
const MemoryRegion *mr,
|
||||||
|
hwaddr offset_in_region,
|
||||||
void *opaque);
|
void *opaque);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -671,8 +671,10 @@ void flatview_for_each_range(FlatView *fv, flatview_cb cb , void *opaque)
|
|||||||
assert(cb);
|
assert(cb);
|
||||||
|
|
||||||
FOR_EACH_FLAT_RANGE(fr, fv) {
|
FOR_EACH_FLAT_RANGE(fr, fv) {
|
||||||
if (cb(fr->addr.start, fr->addr.size, fr->mr, opaque))
|
if (cb(fr->addr.start, fr->addr.size, fr->mr,
|
||||||
|
fr->offset_in_region, opaque)) {
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -99,7 +99,10 @@ struct get_io_cb_info {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static bool get_io_address_cb(Int128 start, Int128 size,
|
static bool get_io_address_cb(Int128 start, Int128 size,
|
||||||
const MemoryRegion *mr, void *opaque) {
|
const MemoryRegion *mr,
|
||||||
|
hwaddr offset_in_region,
|
||||||
|
void *opaque)
|
||||||
|
{
|
||||||
struct get_io_cb_info *info = opaque;
|
struct get_io_cb_info *info = opaque;
|
||||||
if (g_hash_table_lookup(fuzzable_memoryregions, mr)) {
|
if (g_hash_table_lookup(fuzzable_memoryregions, mr)) {
|
||||||
if (info->index == 0) {
|
if (info->index == 0) {
|
||||||
|
Loading…
Reference in New Issue
Block a user