This patchset makes the memory core (memory.c) talk to the backend (in exec.c) via a MemoryListener instead of named functions.
While the motivation for this is to simplify the memory core, it also enables optimizing accelerators some more (by having a tcg MemoryListener to do tcg specific core) and allows unit testing of memory.c (by adding a testing MemoryListener and seeing what it outputs as various inputs are fed into the core). Avi Kivity (10): ioport: change portio_list not to use memory_region_set_offset() memory: remove memory_region_set_offset() memory: add shorthand for invoking a callback on all listeners memory: switch memory listeners to a QTAILQ memory: code motion: move MEMORY_LISTENER_CALL() memory: move ioeventfd ops to MemoryListener memory: add a readonly attribute to MemoryRegionSection memory: don't pass ->readable attribute to cpu_register_physical_memory_log memory: use a MemoryListener for core memory map updates too memory: drop AddressSpaceOps exec-obsolete.h | 5 +- exec.c | 77 +++++++++++++++- hw/vhost.c | 15 +++ ioport.c | 25 ++++- ioport.h | 1 + kvm-all.c | 79 +++++++++++++++ memory.c | 288 ++++++++++++++++++------------------------------------- memory.h | 19 ++-- xen-all.c | 15 +++ 9 files changed, 310 insertions(+), 214 deletions(-) -- 1.7.9