[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v3 08/23] memory: provide defaults for MemoryListene
From: |
Avi Kivity |
Subject: |
[Qemu-devel] [PATCH v3 08/23] memory: provide defaults for MemoryListener operations |
Date: |
Tue, 9 Oct 2012 18:32:33 +0200 |
Many listeners don't need to respond to all MemoryListener callbacks;
provide suitable no-op defaults instead.
Signed-off-by: Avi Kivity <address@hidden>
---
memory.c | 23 +++++++++++++++++------
1 file changed, 17 insertions(+), 6 deletions(-)
diff --git a/memory.c b/memory.c
index b58b97c..269af3f 100644
--- a/memory.c
+++ b/memory.c
@@ -99,13 +99,17 @@ static bool memory_listener_match(MemoryListener *listener,
switch (_direction) { \
case Forward: \
QTAILQ_FOREACH(_listener, &memory_listeners, link) { \
- _listener->_callback(_listener, ##_args); \
+ if (_listener->_callback) { \
+ _listener->_callback(_listener, ##_args); \
+ } \
} \
break; \
case Reverse: \
QTAILQ_FOREACH_REVERSE(_listener, &memory_listeners, \
memory_listeners, link) { \
- _listener->_callback(_listener, ##_args); \
+ if (_listener->_callback) { \
+ _listener->_callback(_listener, ##_args); \
+ } \
} \
break; \
default: \
@@ -120,7 +124,8 @@ static bool memory_listener_match(MemoryListener *listener,
switch (_direction) { \
case Forward: \
QTAILQ_FOREACH(_listener, &memory_listeners, link) { \
- if (memory_listener_match(_listener, _section)) { \
+ if (_listener->_callback \
+ && memory_listener_match(_listener, _section)) { \
_listener->_callback(_listener, _section, ##_args); \
} \
} \
@@ -128,7 +133,8 @@ static bool memory_listener_match(MemoryListener *listener,
case Reverse: \
QTAILQ_FOREACH_REVERSE(_listener, &memory_listeners, \
memory_listeners, link) { \
- if (memory_listener_match(_listener, _section)) { \
+ if (_listener->_callback \
+ && memory_listener_match(_listener, _section)) { \
_listener->_callback(_listener, _section, ##_args); \
} \
} \
@@ -1470,8 +1476,11 @@ static void listener_add_address_space(MemoryListener
*listener,
}
if (global_dirty_log) {
- listener->log_global_start(listener);
+ if (listener->log_global_start) {
+ listener->log_global_start(listener);
+ }
}
+
FOR_EACH_FLAT_RANGE(fr, as->current_map) {
MemoryRegionSection section = {
.mr = fr->mr,
@@ -1481,7 +1490,9 @@ static void listener_add_address_space(MemoryListener
*listener,
.offset_within_address_space = int128_get64(fr->addr.start),
.readonly = fr->readonly,
};
- listener->region_add(listener, §ion);
+ if (listener->region_add) {
+ listener->region_add(listener, §ion);
+ }
}
}
--
1.7.12
- [Qemu-devel] [PULL v3 00/23] Integrate DMA into the memory API, Avi Kivity, 2012/10/09
- [Qemu-devel] [PATCH v3 01/23] memory: rename 'exec-obsolete.h', Avi Kivity, 2012/10/09
- [Qemu-devel] [PATCH v3 02/23] vhost: use MemoryListener filtering to only monitor RAM address space, Avi Kivity, 2012/10/09
- [Qemu-devel] [PATCH v3 03/23] kvm: use separate MemoryListeners for memory and I/O, Avi Kivity, 2012/10/09
- [Qemu-devel] [PATCH v3 04/23] xen_pt: use separate MemoryListeners for memory and I/O, Avi Kivity, 2012/10/09
- [Qemu-devel] [PATCH v3 08/23] memory: provide defaults for MemoryListener operations,
Avi Kivity <=
- [Qemu-devel] [PATCH v3 09/23] memory: drop no-op MemoryListener callbacks, Avi Kivity, 2012/10/09
- [Qemu-devel] [PATCH v3 06/23] memory: export AddressSpace, Avi Kivity, 2012/10/09
- [Qemu-devel] [PATCH v3 17/23] memory: use AddressSpace for MemoryListener filtering, Avi Kivity, 2012/10/09
- [Qemu-devel] [PATCH v3 18/23] s390: avoid reaching into memory core internals, Avi Kivity, 2012/10/09
- [Qemu-devel] [PATCH v3 21/23] memory: add address_space_destroy(), Avi Kivity, 2012/10/09
- [Qemu-devel] [PATCH v3 22/23] pci: give each device its own address space, Avi Kivity, 2012/10/09
- [Qemu-devel] [PATCH v3 14/23] memory: manage coalesced mmio via a MemoryListener, Avi Kivity, 2012/10/09
- [Qemu-devel] [PATCH v3 13/23] xen: drop no-op MemoryListener callbacks, Avi Kivity, 2012/10/09