Skip to content
  • Yury Kotov's avatar
    754cb9c0
    exec: Change RAMBlockIterFunc definition · 754cb9c0
    Yury Kotov authored
    
    
    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: default avatarYury Kotov <yury-kotov@yandex-team.ru>
    Message-Id: <20190215174548.2630-2-yury-kotov@yandex-team.ru>
    Reviewed-by: default avatarDr. David Alan Gilbert <dgilbert@redhat.com>
    Signed-off-by: default avatarDr. David Alan Gilbert <dgilbert@redhat.com>
    754cb9c0
    exec: Change RAMBlockIterFunc definition
    Yury Kotov authored
    
    
    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: default avatarYury Kotov <yury-kotov@yandex-team.ru>
    Message-Id: <20190215174548.2630-2-yury-kotov@yandex-team.ru>
    Reviewed-by: default avatarDr. David Alan Gilbert <dgilbert@redhat.com>
    Signed-off-by: default avatarDr. David Alan Gilbert <dgilbert@redhat.com>
Loading