|
@@ -39,7 +39,7 @@ static bool memory_region_update_pending;
|
|
|
static bool ioeventfd_update_pending;
|
|
|
static bool global_dirty_log = false;
|
|
|
|
|
|
-static QTAILQ_HEAD(memory_listeners, MemoryListener) memory_listeners
|
|
|
+static QTAILQ_HEAD(, MemoryListener) memory_listeners
|
|
|
= QTAILQ_HEAD_INITIALIZER(memory_listeners);
|
|
|
|
|
|
static QTAILQ_HEAD(, AddressSpace) address_spaces
|
|
@@ -113,8 +113,7 @@ enum ListenerDirection { Forward, Reverse };
|
|
|
} \
|
|
|
break; \
|
|
|
case Reverse: \
|
|
|
- QTAILQ_FOREACH_REVERSE(_listener, &memory_listeners, \
|
|
|
- memory_listeners, link) { \
|
|
|
+ QTAILQ_FOREACH_REVERSE(_listener, &memory_listeners, link) { \
|
|
|
if (_listener->_callback) { \
|
|
|
_listener->_callback(_listener, ##_args); \
|
|
|
} \
|
|
@@ -128,19 +127,17 @@ enum ListenerDirection { Forward, Reverse };
|
|
|
#define MEMORY_LISTENER_CALL(_as, _callback, _direction, _section, _args...) \
|
|
|
do { \
|
|
|
MemoryListener *_listener; \
|
|
|
- struct memory_listeners_as *list = &(_as)->listeners; \
|
|
|
\
|
|
|
switch (_direction) { \
|
|
|
case Forward: \
|
|
|
- QTAILQ_FOREACH(_listener, list, link_as) { \
|
|
|
+ QTAILQ_FOREACH(_listener, &(_as)->listeners, link_as) { \
|
|
|
if (_listener->_callback) { \
|
|
|
_listener->_callback(_listener, _section, ##_args); \
|
|
|
} \
|
|
|
} \
|
|
|
break; \
|
|
|
case Reverse: \
|
|
|
- QTAILQ_FOREACH_REVERSE(_listener, list, memory_listeners_as, \
|
|
|
- link_as) { \
|
|
|
+ QTAILQ_FOREACH_REVERSE(_listener, &(_as)->listeners, link_as) { \
|
|
|
if (_listener->_callback) { \
|
|
|
_listener->_callback(_listener, _section, ##_args); \
|
|
|
} \
|
|
@@ -2691,8 +2688,7 @@ void memory_listener_register(MemoryListener *listener, AddressSpace *as)
|
|
|
|
|
|
listener->address_space = as;
|
|
|
if (QTAILQ_EMPTY(&memory_listeners)
|
|
|
- || listener->priority >= QTAILQ_LAST(&memory_listeners,
|
|
|
- memory_listeners)->priority) {
|
|
|
+ || listener->priority >= QTAILQ_LAST(&memory_listeners)->priority) {
|
|
|
QTAILQ_INSERT_TAIL(&memory_listeners, listener, link);
|
|
|
} else {
|
|
|
QTAILQ_FOREACH(other, &memory_listeners, link) {
|
|
@@ -2704,8 +2700,7 @@ void memory_listener_register(MemoryListener *listener, AddressSpace *as)
|
|
|
}
|
|
|
|
|
|
if (QTAILQ_EMPTY(&as->listeners)
|
|
|
- || listener->priority >= QTAILQ_LAST(&as->listeners,
|
|
|
- memory_listeners)->priority) {
|
|
|
+ || listener->priority >= QTAILQ_LAST(&as->listeners)->priority) {
|
|
|
QTAILQ_INSERT_TAIL(&as->listeners, listener, link_as);
|
|
|
} else {
|
|
|
QTAILQ_FOREACH(other, &as->listeners, link_as) {
|