memory: eliminate global MemoryListeners

There is none, so just drop the code.

Backports commit d45fa784cd0c111131696808d1168259d66b7519 from qemu
This commit is contained in:
Paolo Bonzini 2018-02-26 10:13:34 -05:00 committed by Lioncash
parent 8734e13a73
commit 4b06e8bbb7
No known key found for this signature in database
GPG Key ID: 4E3C3CC1031BA9C7
2 changed files with 13 additions and 18 deletions

View File

@ -213,7 +213,7 @@ struct MemoryListener {
void (*log_global_stop)(MemoryListener *listener); void (*log_global_stop)(MemoryListener *listener);
/* Lower = earlier (during add), later (during del) */ /* Lower = earlier (during add), later (during del) */
unsigned priority; unsigned priority;
AddressSpace *address_space_filter; AddressSpace *address_space;
QTAILQ_ENTRY(MemoryListener) link; QTAILQ_ENTRY(MemoryListener) link;
}; };

View File

@ -185,8 +185,7 @@ enum ListenerDirection { Forward, Reverse };
static bool memory_listener_match(MemoryListener *listener, static bool memory_listener_match(MemoryListener *listener,
MemoryRegionSection *section) MemoryRegionSection *section)
{ {
return !listener->address_space_filter return listener->address_space == section->address_space;
|| listener->address_space_filter == section->address_space;
} }
#define MEMORY_LISTENER_CALL_GLOBAL(_callback, _direction, ...) \ #define MEMORY_LISTENER_CALL_GLOBAL(_callback, _direction, ...) \
@ -1712,18 +1711,16 @@ bool memory_region_present(MemoryRegion *container, hwaddr addr)
return mr && mr != container; return mr && mr != container;
} }
static void listener_add_address_space(MemoryListener *listener, static QEMU_UNUSED_FUNC void listener_add_address_space(MemoryListener *listener,
AddressSpace *as) AddressSpace *as)
{ {
FlatView *view; FlatView *view;
FlatRange *fr; FlatRange *fr;
if (listener->address_space_filter if (listener->begin) {
&& listener->address_space_filter != as) { listener->begin(listener);
return;
} }
if (as->uc->global_dirty_log) {
if (listener->address_space_filter->uc->global_dirty_log) {
if (listener->log_global_start) { if (listener->log_global_start) {
listener->log_global_start(listener); listener->log_global_start(listener);
} }
@ -1738,6 +1735,9 @@ static void listener_add_address_space(MemoryListener *listener,
fr->addr.size, fr->addr.size,
int128_get64(fr->addr.start), int128_get64(fr->addr.start),
fr->readonly); fr->readonly);
if (fr->dirty_log_mask && listener->log_start) {
listener->log_start(listener, &section, 0, fr->dirty_log_mask);
}
if (listener->region_add) { if (listener->region_add) {
listener->region_add(listener, &section); listener->region_add(listener, &section);
} }
@ -1745,12 +1745,11 @@ static void listener_add_address_space(MemoryListener *listener,
flatview_unref(view); flatview_unref(view);
} }
void memory_listener_register(struct uc_struct* uc, MemoryListener *listener, AddressSpace *filter) void memory_listener_register(struct uc_struct* uc, MemoryListener *listener, AddressSpace *as)
{ {
MemoryListener *other = NULL; MemoryListener *other = NULL;
AddressSpace *as;
listener->address_space_filter = filter; listener->address_space = as;
if (QTAILQ_EMPTY(&uc->memory_listeners) if (QTAILQ_EMPTY(&uc->memory_listeners)
|| listener->priority >= QTAILQ_LAST(&uc->memory_listeners, || listener->priority >= QTAILQ_LAST(&uc->memory_listeners,
memory_listeners)->priority) { memory_listeners)->priority) {
@ -1763,10 +1762,6 @@ void memory_listener_register(struct uc_struct* uc, MemoryListener *listener, Ad
} }
QTAILQ_INSERT_BEFORE(other, listener, link); QTAILQ_INSERT_BEFORE(other, listener, link);
} }
QTAILQ_FOREACH(as, &uc->address_spaces, address_spaces_link) {
listener_add_address_space(listener, as);
}
} }
void memory_listener_unregister(struct uc_struct *uc, MemoryListener *listener) void memory_listener_unregister(struct uc_struct *uc, MemoryListener *listener)
@ -1804,7 +1799,7 @@ static void do_address_space_destroy(AddressSpace *as)
// TODO(danghvu): why assert fail here? // TODO(danghvu): why assert fail here?
//QTAILQ_FOREACH(listener, &as->uc->memory_listeners, link) { //QTAILQ_FOREACH(listener, &as->uc->memory_listeners, link) {
// assert(listener->address_space_filter != as); // assert(listener->address_space != as);
//} //}
flatview_unref(as->current_map); flatview_unref(as->current_map);