[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Difference between 'current_machine' vs MACHINE(qdev_get_machine())
From: |
Philippe Mathieu-Daudé |
Subject: |
Difference between 'current_machine' vs MACHINE(qdev_get_machine()) |
Date: |
Thu, 9 Jan 2020 12:23:01 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.2.2 |
Hi,
"hw/boards.h" declare current_machine, and vl.c defines it:
current_machine =
MACHINE(object_new_with_class(OBJECT_CLASS(machine_class)));
object_property_add_child(object_get_root(), "machine",
OBJECT(current_machine), &error_abort);
The bigger user of 'current_machine' is the accel/KVM code.
Recently in a0628599f..cc7d44c2e0 "Replace global smp variables with
machine smp properties" we started to use MACHINE(qdev_get_machine()).
qdev_get_machine() resolves the machine in the QOM composition tree.
I am confused by this comment:
/* qdev_get_machine() can return something that's not TYPE_MACHINE
* if this is one of the user-only emulators; in that case there's
* no need to check the ignore_memory_transaction_failures board flag.
*/
Following a0628599f..cc7d44c2e0, a5e0b33119 use 'current_machine' again.
What are the differences between both form, when should we use one or
another (or can we use a single one?). Can this break user-only mode?
Thanks,
Phil.
- Difference between 'current_machine' vs MACHINE(qdev_get_machine()),
Philippe Mathieu-Daudé <=