]> git.proxmox.com Git - mirror_qemu.git/commit
exec: Change RAMBlockIterFunc definition
authorYury Kotov <yury-kotov@yandex-team.ru>
Fri, 15 Feb 2019 17:45:44 +0000 (20:45 +0300)
committerDr. David Alan Gilbert <dgilbert@redhat.com>
Wed, 6 Mar 2019 10:49:17 +0000 (10:49 +0000)
commit754cb9c0ebcf2164107baf39e75517e459887622
tree935baacab47105e5ac101848413b7bb3b39008d0
parent9589e7630139700581eff3ba9ddfdfbe99362440
exec: Change RAMBlockIterFunc definition

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>
exec.c
include/exec/cpu-common.h
migration/postcopy-ram.c
migration/rdma.c
stubs/ram-block.c
util/vfio-helpers.c