Skip to content

Commit

Permalink
memory: provide defaults for MemoryListener operations
Browse files Browse the repository at this point in the history
Many listeners don't need to respond to all MemoryListener callbacks;
provide suitable no-op defaults instead.

Signed-off-by: Avi Kivity <avi@redhat.com>
  • Loading branch information
avikivity committed Oct 15, 2012
1 parent 0d673e3 commit 975aefe
Showing 1 changed file with 17 additions and 6 deletions.
23 changes: 17 additions & 6 deletions memory.c
Original file line number Diff line number Diff line change
Expand Up @@ -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: \
Expand All @@ -120,15 +124,17 @@ 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); \
} \
} \
break; \
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); \
} \
} \
Expand Down Expand Up @@ -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,
Expand All @@ -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, &section);
if (listener->region_add) {
listener->region_add(listener, &section);
}
}
}

Expand Down

0 comments on commit 975aefe

Please sign in to comment.