mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 08:13:54 -06:00
Clean-ups: qom-ify serial and remove QDEV_PROP_PTR
Hi, QDEV_PROP_PTR is marked in multiple places as "FIXME/TODO/remove me". In most cases, it can be easily replaced with QDEV_PROP_LINK when the pointer points to an Object. There are a few places where such substitution isn't possible. For those places, it seems reasonable to use a specific setter method instead, and keep the user_creatable = false. In other places, proper usage of qdev or other facilies is the solution. The serial code wasn't converted to qdev, which makes it a bit more archaic to deal with. Let's convert it first, so we can more easily embed it from other devices, and re-export some properties and drop QDEV_PROP_PTR usage. -----BEGIN PGP SIGNATURE----- iQJQBAABCAA6FiEEh6m9kz+HxgbSdvYt2ujhCXWWnOUFAl4UnUYcHG1hcmNhbmRy ZS5sdXJlYXVAcmVkaGF0LmNvbQAKCRDa6OEJdZac5cfYEACcTfXklXdxLDj94Q5/ d6MxYqZWckO+vyMqOwonodl9BS3clpDDxbYzyfTpqwKS2cVg1eUUBPR7/eioX6zT grM0rlgsKWJf9UurJwJWw7Zys7dXZMVJ2BdigLUEZrv9hFF15t344qoKgk4wYmBj 2wC7l7j2WZZ0vtXN7IH4/ZXnaN5/kdoPj6BrF0oNSJaq1AjPByQxmOJhvrxVsm6y gn3la4XbfMIC68qPjcDJAScGXtCWG1Vydw9cFHwRpMfcvPyL70l6FMjIwrLYNQ9b j1AkcEXeev5nWT+gLGxt+TGXB0Sd2ID9uRYxhyZRA4fdjHFtlWfdOwepOOlSlTO+ yfpf9STDLuDQGLTJyNZpYGGDDcm4xsJ8arD/7/Mq/35BQl9ZUT+m6uC1tDhxEHzf +AD/Kh8rMptyAjwtqD2XbqyLoaFJCsPjZbjTj3SY08WaeqClmaAbSD2eaJiNXy4H +rFg9P/eOB+71R1AoMKfiBFzdGV6TG5PLZOJ/oN02yqp0oW8eDWYcETB3j0tIgS1 u2WVCS2cd8IqYa+UQ7COOpoX0UwICmIWV64kxioD7uFQiK/1nQYw4UnPHv29qY6k fTa8jUC5hPiDN1rRYqNpNoVJsstSZfSgpo5jV75sxSyDucupu+SM9qmo3+fBab+q Eol3Ypz4virkNU8IYCYFFiG4Qg== =iYVd -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/elmarco/tags/prop-ptr-pull-request' into staging Clean-ups: qom-ify serial and remove QDEV_PROP_PTR Hi, QDEV_PROP_PTR is marked in multiple places as "FIXME/TODO/remove me". In most cases, it can be easily replaced with QDEV_PROP_LINK when the pointer points to an Object. There are a few places where such substitution isn't possible. For those places, it seems reasonable to use a specific setter method instead, and keep the user_creatable = false. In other places, proper usage of qdev or other facilies is the solution. The serial code wasn't converted to qdev, which makes it a bit more archaic to deal with. Let's convert it first, so we can more easily embed it from other devices, and re-export some properties and drop QDEV_PROP_PTR usage. # gpg: Signature made Tue 07 Jan 2020 15:01:26 GMT # gpg: using RSA key 87A9BD933F87C606D276F62DDAE8E10975969CE5 # gpg: issuer "marcandre.lureau@redhat.com" # gpg: Good signature from "Marc-André Lureau <marcandre.lureau@redhat.com>" [full] # gpg: aka "Marc-André Lureau <marcandre.lureau@gmail.com>" [full] # Primary key fingerprint: 87A9 BD93 3F87 C606 D276 F62D DAE8 E109 7596 9CE5 * remotes/elmarco/tags/prop-ptr-pull-request: (37 commits) qdev/qom: remove some TODO limitations now that PROP_PTR is gone qdev: remove QDEV_PROP_PTR qdev: remove PROP_MEMORY_REGION omap-gpio: remove PROP_PTR omap-i2c: remove PROP_PTR omap-intc: remove PROP_PTR smbus-eeprom: remove PROP_PTR cris: improve passing PIC interrupt vector to the CPU mips/cps: fix setting saar property qdev: use g_strcmp0() instead of open-coding it leon3: use qdev gpio facilities for the PIL leon3: use qemu_irq framework instead of callback as property dp8393x: replace PROP_PTR with PROP_LINK etraxfs: remove PROP_PTR usage lance: replace PROP_PTR with PROP_LINK vmmouse: replace PROP_PTR with PROP_LINK sm501: make SerialMM a child, export chardev property mips: use sysbus_mmio_get_region() instead of internal fields mips: use sysbus_add_io() mips: baudbase is 115200 by default ... Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
1bbd1511b6
47 changed files with 514 additions and 396 deletions
|
@ -501,13 +501,6 @@ const PropertyInfo qdev_prop_string = {
|
|||
.set = set_string,
|
||||
};
|
||||
|
||||
/* --- pointer --- */
|
||||
|
||||
/* Not a proper property, just for dirty hacks. TODO Remove it! */
|
||||
const PropertyInfo qdev_prop_ptr = {
|
||||
.name = "ptr",
|
||||
};
|
||||
|
||||
/* --- mac address --- */
|
||||
|
||||
/*
|
||||
|
@ -1165,17 +1158,6 @@ void qdev_prop_set_enum(DeviceState *dev, const char *name, int value)
|
|||
name, &error_abort);
|
||||
}
|
||||
|
||||
void qdev_prop_set_ptr(DeviceState *dev, const char *name, void *value)
|
||||
{
|
||||
Property *prop;
|
||||
void **ptr;
|
||||
|
||||
prop = qdev_prop_find(dev, name);
|
||||
assert(prop && prop->info == &qdev_prop_ptr);
|
||||
ptr = qdev_get_prop_ptr(dev, prop);
|
||||
*ptr = value;
|
||||
}
|
||||
|
||||
static GPtrArray *global_props(void)
|
||||
{
|
||||
static GPtrArray *gp;
|
||||
|
|
|
@ -394,11 +394,8 @@ static NamedGPIOList *qdev_get_named_gpio_list(DeviceState *dev,
|
|||
NamedGPIOList *ngl;
|
||||
|
||||
QLIST_FOREACH(ngl, &dev->gpios, node) {
|
||||
/* NULL is a valid and matchable name, otherwise do a normal
|
||||
* strcmp match.
|
||||
*/
|
||||
if ((!ngl->name && !name) ||
|
||||
(name && ngl->name && strcmp(name, ngl->name) == 0)) {
|
||||
/* NULL is a valid and matchable name. */
|
||||
if (g_strcmp0(name, ngl->name) == 0) {
|
||||
return ngl;
|
||||
}
|
||||
}
|
||||
|
@ -739,14 +736,6 @@ void qdev_property_add_static(DeviceState *dev, Property *prop,
|
|||
if (prop->info->create) {
|
||||
prop->info->create(obj, prop, &local_err);
|
||||
} else {
|
||||
/*
|
||||
* TODO qdev_prop_ptr does not have getters or setters. It must
|
||||
* go now that it can be replaced with links. The test should be
|
||||
* removed along with it: all static properties are read/write.
|
||||
*/
|
||||
if (!prop->info->get && !prop->info->set) {
|
||||
return;
|
||||
}
|
||||
object_property_add(obj, prop->name, prop->info->name,
|
||||
prop->info->get, prop->info->set,
|
||||
prop->info->release,
|
||||
|
|
|
@ -250,38 +250,6 @@ DeviceState *sysbus_create_varargs(const char *name,
|
|||
return dev;
|
||||
}
|
||||
|
||||
DeviceState *sysbus_try_create_varargs(const char *name,
|
||||
hwaddr addr, ...)
|
||||
{
|
||||
DeviceState *dev;
|
||||
SysBusDevice *s;
|
||||
va_list va;
|
||||
qemu_irq irq;
|
||||
int n;
|
||||
|
||||
dev = qdev_try_create(NULL, name);
|
||||
if (!dev) {
|
||||
return NULL;
|
||||
}
|
||||
s = SYS_BUS_DEVICE(dev);
|
||||
qdev_init_nofail(dev);
|
||||
if (addr != (hwaddr)-1) {
|
||||
sysbus_mmio_map(s, 0, addr);
|
||||
}
|
||||
va_start(va, addr);
|
||||
n = 0;
|
||||
while (1) {
|
||||
irq = va_arg(va, qemu_irq);
|
||||
if (!irq) {
|
||||
break;
|
||||
}
|
||||
sysbus_connect_irq(s, n, irq);
|
||||
n++;
|
||||
}
|
||||
va_end(va);
|
||||
return dev;
|
||||
}
|
||||
|
||||
static void sysbus_dev_print(Monitor *mon, DeviceState *dev, int indent)
|
||||
{
|
||||
SysBusDevice *s = SYS_BUS_DEVICE(dev);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue