aboutsummaryrefslogtreecommitdiff
path: root/ui
diff options
context:
space:
mode:
authorPeter Maydell <peter.maydell@linaro.org>2024-02-20 16:06:20 +0000
committerPeter Maydell <peter.maydell@linaro.org>2024-02-27 13:01:42 +0000
commit71b3ea373bc3b8e3e656d1e8c390896e21c31c0b (patch)
treec5104cf42b27bdcbc023d87d3891e196196c04e8 /ui
parent86fae16ed298518ea851d6accc48643e6bdf8ed1 (diff)
downloadqemu-71b3ea373bc3b8e3e656d1e8c390896e21c31c0b.zip
qemu-71b3ea373bc3b8e3e656d1e8c390896e21c31c0b.tar.gz
qemu-71b3ea373bc3b8e3e656d1e8c390896e21c31c0b.tar.bz2
hw/core/reset: Implement qemu_register_reset via qemu_register_resettable
Reimplement qemu_register_reset() via qemu_register_resettable(). We define a new LegacyReset object which implements Resettable and defines its reset hold phase method to call a QEMUResetHandler function. When qemu_register_reset() is called, we create a new LegacyReset object and add it to the simulation_reset ResettableContainer. When qemu_unregister_reset() is called, we find the LegacyReset object in the container and remove it. This implementation of qemu_unregister_reset() means we'll end up scanning the ResetContainer's list of child objects twice, once to find the LegacyReset object, and once in g_ptr_array_remove(). In theory we could avoid this by having the ResettableContainer interface include a resettable_container_remove_with_equal_func() that took a callback method so that we could use g_ptr_array_find_with_equal_func() and g_ptr_array_remove_index(). But we don't expect qemu_unregister_reset() to be called frequently or in hot paths, and we expect the simulation_reset container to usually not have many children. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> Message-id: 20240220160622.114437-9-peter.maydell@linaro.org Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
Diffstat (limited to 'ui')
0 files changed, 0 insertions, 0 deletions