mirror of https://gitee.com/openkylin/qemu.git
qdev: Document that pointer properties kill device_add
Ask users of DEFINE_PROP_PTR() to set cannot_instantiate_with_device_add_yet, or explain why it's not needed. Signed-off-by: Markus Armbruster <armbru@redhat.com> Signed-off-by: Andreas Färber <afaerber@suse.de>
This commit is contained in:
parent
1b111dc121
commit
c272758f93
|
@ -122,8 +122,25 @@ extern PropertyInfo qdev_prop_arraylen;
|
|||
#define DEFINE_PROP_PCI_DEVFN(_n, _s, _f, _d) \
|
||||
DEFINE_PROP_DEFAULT(_n, _s, _f, _d, qdev_prop_pci_devfn, int32_t)
|
||||
|
||||
/*
|
||||
* Please avoid pointer properties. If you must use them, you must
|
||||
* cover them in their device's class init function as follows:
|
||||
*
|
||||
* - If the property must be set, the device cannot be used with
|
||||
* device_add, so add code like this:
|
||||
* |* Reason: pointer property "NAME-OF-YOUR-PROP" *|
|
||||
* DeviceClass *dc = DEVICE_CLASS(class);
|
||||
* dc->cannot_instantiate_with_device_add_yet = true;
|
||||
*
|
||||
* - If the property may safely remain null, document it like this:
|
||||
* |*
|
||||
* * Note: pointer property "interrupt_vector" may remain null, thus
|
||||
* * no need for dc->cannot_instantiate_with_device_add_yet = true;
|
||||
* *|
|
||||
*/
|
||||
#define DEFINE_PROP_PTR(_n, _s, _f) \
|
||||
DEFINE_PROP(_n, _s, _f, qdev_prop_ptr, void*)
|
||||
|
||||
#define DEFINE_PROP_CHR(_n, _s, _f) \
|
||||
DEFINE_PROP(_n, _s, _f, qdev_prop_chr, CharDriverState*)
|
||||
#define DEFINE_PROP_STRING(_n, _s, _f) \
|
||||
|
|
Loading…
Reference in New Issue