On 10/18/2011 08:08 PM, Blue Swirl wrote: > > > What would the API look like? accept a range, return true if any of the > > pages in the range are dirty? > > That would be 1:1 conversion but maybe better approach would be to > return the first dirty address (or zero if not found), then various > bitmap speedups may be available.
Ah, an iterator. Yes, it would allow switching from iteration on scan lines to iteration on actual dirty ranges. Perhaps void memory_region_for_each_dirty_range(MemoryRegion *mr, target_phys_addr_t start, uint64_t size, void (*dirty)(void *opaque, target_phys_addr_t start, uint64_t size), void *opaque); -- I have a truly marvellous patch that fixes the bug which this signature is too narrow to contain.