754cb9c0eb
Currently, qemu_ram_foreach_* calls RAMBlockIterFunc with many block-specific arguments. But often iter func needs RAMBlock*. This refactoring is needed for fast access to RAMBlock flags from qemu_ram_foreach_block's callback. The only way to achieve this now is to call qemu_ram_block_from_host (which also enumerates blocks). So, this patch reduces complexity of qemu_ram_foreach_block() -> cb() -> qemu_ram_block_from_host() from O(n^2) to O(n). Fix RAMBlockIterFunc definition and add some functions to read RAMBlock* fields witch were passed. Signed-off-by: Yury Kotov <yury-kotov@yandex-team.ru> Message-Id: <20190215174548.2630-2-yury-kotov@yandex-team.ru> Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com> Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
32 lines
468 B
C
32 lines
468 B
C
#include "qemu/osdep.h"
|
|
#include "exec/ramlist.h"
|
|
#include "exec/cpu-common.h"
|
|
|
|
void *qemu_ram_get_host_addr(RAMBlock *rb)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
ram_addr_t qemu_ram_get_offset(RAMBlock *rb)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
ram_addr_t qemu_ram_get_used_length(RAMBlock *rb)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
void ram_block_notifier_add(RAMBlockNotifier *n)
|
|
{
|
|
}
|
|
|
|
void ram_block_notifier_remove(RAMBlockNotifier *n)
|
|
{
|
|
}
|
|
|
|
int qemu_ram_foreach_block(RAMBlockIterFunc func, void *opaque)
|
|
{
|
|
return 0;
|
|
}
|