mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-03 15:53:54 -06:00
* qdev: second part of Property cleanups
* rust: second part of QOM rework * rust: callbacks wrapper * rust: pl011 bugfixes * kvm: cleanup errors in kvm_convert_memory() -----BEGIN PGP SIGNATURE----- iQFIBAABCAAyFiEE8TM4V0tmI4mGbHaCv/vSX3jHroMFAmdkaEkUHHBib256aW5p QHJlZGhhdC5jb20ACgkQv/vSX3jHroN0/wgAgIJg8BrlRKfmiz14NZfph8/jarSj TOWYVxL2v4q98KBuL5pta2ucObgzwqyqSyc02S2DGSOIMQCIiBB5MaCk1iMjx+BO pmVU8gNlD8faO8SSmnnr+jDQt+G+bQ/nRgQJOAReF8oVw3O2aC/FaVKpitMzWtvv PLnJWdrqqpGq14OzX8iNCzSujxppAuyjrhT4lNlekzDoDfdTez72r+rXkvg4GzZL QC3xLYg/LrT8Rs+zgOhm/AaIyS4bOyMlkU9Du1rQ6Tyne45ey2FCwKVzBKrJdGcw sVbzEclxseLenoTbZqYK6JTzLdDoThVUbY2JwoCGUaIm+74P4NjEsUsTVg== =TuQM -----END PGP SIGNATURE----- Merge tag 'for-upstream' of https://gitlab.com/bonzini/qemu into staging * qdev: second part of Property cleanups * rust: second part of QOM rework * rust: callbacks wrapper * rust: pl011 bugfixes * kvm: cleanup errors in kvm_convert_memory() # -----BEGIN PGP SIGNATURE----- # # iQFIBAABCAAyFiEE8TM4V0tmI4mGbHaCv/vSX3jHroMFAmdkaEkUHHBib256aW5p # QHJlZGhhdC5jb20ACgkQv/vSX3jHroN0/wgAgIJg8BrlRKfmiz14NZfph8/jarSj # TOWYVxL2v4q98KBuL5pta2ucObgzwqyqSyc02S2DGSOIMQCIiBB5MaCk1iMjx+BO # pmVU8gNlD8faO8SSmnnr+jDQt+G+bQ/nRgQJOAReF8oVw3O2aC/FaVKpitMzWtvv # PLnJWdrqqpGq14OzX8iNCzSujxppAuyjrhT4lNlekzDoDfdTez72r+rXkvg4GzZL # QC3xLYg/LrT8Rs+zgOhm/AaIyS4bOyMlkU9Du1rQ6Tyne45ey2FCwKVzBKrJdGcw # sVbzEclxseLenoTbZqYK6JTzLdDoThVUbY2JwoCGUaIm+74P4NjEsUsTVg== # =TuQM # -----END PGP SIGNATURE----- # gpg: Signature made Thu 19 Dec 2024 13:39:05 EST # gpg: using RSA key F13338574B662389866C7682BFFBD25F78C7AE83 # gpg: issuer "pbonzini@redhat.com" # gpg: Good signature from "Paolo Bonzini <bonzini@gnu.org>" [full] # gpg: aka "Paolo Bonzini <pbonzini@redhat.com>" [full] # Primary key fingerprint: 46F5 9FBD 57D6 12E7 BFD4 E2F7 7E15 100C CD36 69B1 # Subkey fingerprint: F133 3857 4B66 2389 866C 7682 BFFB D25F 78C7 AE83 * tag 'for-upstream' of https://gitlab.com/bonzini/qemu: (42 commits) rust: pl011: simplify handling of the FIFO enabled bit in LCR rust: pl011: fix migration stream rust: pl011: extend registers to 32 bits rust: pl011: fix break errors and definition of Data struct rust: pl011: always use reset() method on registers rust: pl011: match break logic of C version rust: pl011: fix declaration of LineControl bits target/i386: Reset TSCs of parked vCPUs too on VM reset kvm: consistently return 0/-errno from kvm_convert_memory rust: qemu-api: add a module to wrap functions and zero-sized closures rust: qom: add initial subset of methods on Object rust: qom: add casting functionality rust: tests: allow writing more than one test bql: add a "mock" BQL for Rust unit tests rust: re-export C types from qemu-api submodules rust: rename qemu-api modules to follow C code a bit more rust: qom: add possibility of overriding unparent rust: qom: put class_init together from multiple ClassInitImpl<> Constify all opaque Property pointers hw/core/qdev-properties: Constify Property argument to PropertyInfo.print ... Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
commit
e3a207722b
603 changed files with 1422 additions and 1269 deletions
|
@ -138,6 +138,12 @@ struct DeviceClass {
|
|||
*/
|
||||
const Property *props_;
|
||||
|
||||
/**
|
||||
* @props_count_: number of elements in @props_; should only be
|
||||
* assigned by using device_class_set_props().
|
||||
*/
|
||||
uint16_t props_count_;
|
||||
|
||||
/**
|
||||
* @user_creatable: Can user instantiate with -device / device_add?
|
||||
*
|
||||
|
@ -935,13 +941,38 @@ char *qdev_get_own_fw_dev_path_from_handler(BusState *bus, DeviceState *dev);
|
|||
/**
|
||||
* device_class_set_props(): add a set of properties to an device
|
||||
* @dc: the parent DeviceClass all devices inherit
|
||||
* @props: an array of properties, terminate by DEFINE_PROP_END_OF_LIST()
|
||||
* @props: an array of properties
|
||||
*
|
||||
* This will add a set of properties to the object. It will fault if
|
||||
* you attempt to add an existing property defined by a parent class.
|
||||
* To modify an inherited property you need to use????
|
||||
*
|
||||
* Validate that @props has at least one Property.
|
||||
* Validate that @props is an array, not a pointer, via ARRAY_SIZE.
|
||||
* Validate that the array does not have a legacy terminator at compile-time;
|
||||
* requires -O2 and the array to be const.
|
||||
*/
|
||||
#define device_class_set_props(dc, props) \
|
||||
do { \
|
||||
QEMU_BUILD_BUG_ON(sizeof(props) == 0); \
|
||||
size_t props_count_ = ARRAY_SIZE(props); \
|
||||
if ((props)[props_count_ - 1].name == NULL) { \
|
||||
qemu_build_not_reached(); \
|
||||
} \
|
||||
device_class_set_props_n((dc), (props), props_count_); \
|
||||
} while (0)
|
||||
|
||||
/**
|
||||
* device_class_set_props_n(): add a set of properties to an device
|
||||
* @dc: the parent DeviceClass all devices inherit
|
||||
* @props: an array of properties
|
||||
* @n: ARRAY_SIZE(@props)
|
||||
*
|
||||
* This will add a set of properties to the object. It will fault if
|
||||
* you attempt to add an existing property defined by a parent class.
|
||||
* To modify an inherited property you need to use????
|
||||
*/
|
||||
void device_class_set_props(DeviceClass *dc, const Property *props);
|
||||
void device_class_set_props_n(DeviceClass *dc, const Property *props, size_t n);
|
||||
|
||||
/**
|
||||
* device_class_set_parent_realize() - set up for chaining realize fns
|
||||
|
|
|
@ -16,17 +16,17 @@ struct Property {
|
|||
const char *name;
|
||||
const PropertyInfo *info;
|
||||
ptrdiff_t offset;
|
||||
uint8_t bitnr;
|
||||
const char *link_type;
|
||||
uint64_t bitmask;
|
||||
bool set_default;
|
||||
union {
|
||||
int64_t i;
|
||||
uint64_t u;
|
||||
} defval;
|
||||
int arrayoffset;
|
||||
const PropertyInfo *arrayinfo;
|
||||
int arrayoffset;
|
||||
int arrayfieldsize;
|
||||
const char *link_type;
|
||||
uint8_t bitnr;
|
||||
bool set_default;
|
||||
};
|
||||
|
||||
struct PropertyInfo {
|
||||
|
@ -34,7 +34,7 @@ struct PropertyInfo {
|
|||
const char *description;
|
||||
const QEnumLookup *enum_table;
|
||||
bool realized_set_allowed; /* allow setting property on realized device */
|
||||
int (*print)(Object *obj, Property *prop, char *dest, size_t len);
|
||||
int (*print)(Object *obj, const Property *prop, char *dest, size_t len);
|
||||
void (*set_default_value)(ObjectProperty *op, const Property *prop);
|
||||
ObjectProperty *(*create)(ObjectClass *oc, const char *name,
|
||||
const Property *prop);
|
||||
|
@ -171,9 +171,6 @@ extern const PropertyInfo qdev_prop_link;
|
|||
#define DEFINE_PROP_SIZE32(_n, _s, _f, _d) \
|
||||
DEFINE_PROP_UNSIGNED(_n, _s, _f, _d, qdev_prop_size32, uint32_t)
|
||||
|
||||
#define DEFINE_PROP_END_OF_LIST() \
|
||||
{}
|
||||
|
||||
/*
|
||||
* Set properties between creation and realization.
|
||||
*
|
||||
|
@ -204,7 +201,7 @@ void qdev_prop_set_enum(DeviceState *dev, const char *name, int value);
|
|||
/* Takes ownership of @values */
|
||||
void qdev_prop_set_array(DeviceState *dev, const char *name, QList *values);
|
||||
|
||||
void *object_field_prop_ptr(Object *obj, Property *prop);
|
||||
void *object_field_prop_ptr(Object *obj, const Property *prop);
|
||||
|
||||
void qdev_prop_register_global(GlobalProperty *prop);
|
||||
const GlobalProperty *qdev_find_global_prop(Object *obj,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue