[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 01/19] NOTFORMERGE scripts/coccinelle: Add qom-qdev-prop.cocci
From: |
Philippe Mathieu-Daudé |
Subject: |
[PATCH 01/19] NOTFORMERGE scripts/coccinelle: Add qom-qdev-prop.cocci |
Date: |
Fri, 3 Feb 2023 19:08:56 +0100 |
Script I used to generate the following patches. This is
not an automatic conversion as object_property_set_[u]int()
does not specify the type size. Each integer property must
then be converted manually. Therefore this script doesn't
seem relevant to be committed in the repository.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
scripts/coccinelle/qom-qdev-prop.cocci | 259 +++++++++++++++++++++++++
1 file changed, 259 insertions(+)
create mode 100644 scripts/coccinelle/qom-qdev-prop.cocci
diff --git a/scripts/coccinelle/qom-qdev-prop.cocci
b/scripts/coccinelle/qom-qdev-prop.cocci
new file mode 100644
index 0000000000..21e6ed2b33
--- /dev/null
+++ b/scripts/coccinelle/qom-qdev-prop.cocci
@@ -0,0 +1,259 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+// SPDX-FileCopyrightText: Linaro Limited 2023
+//
+// Convert QOM set_property() API to QDev set_prop() API equivalent
+//
+// Only bool / string / link properties are automatically converted.
+// Integer properties must be converted manually, since the QOM
+// object_property_set_[u]int() helpers don't specify the type size.
+
+
+//
+// bool
+//
+
+// bool OBJECT
+@@
+typedef DeviceState;
+identifier dev;
+expression prop, val;
+@@
+ DeviceState *dev;
+ ...
+- object_property_set_bool(OBJECT(dev), prop, val, ... /* &error_abort */);
++ qdev_prop_set_bit(dev, prop, val);
+
+// bool dev
+@@
+expression dev;
+expression prop, val;
+@@
+- object_property_set_bool(OBJECT(dev), prop, val, ... /* &error_abort */);
++ qdev_prop_set_bit(dev, prop, val);
+ ...
+(
+ sysbus_realize(SYS_BUS_DEVICE(dev), ...);
+|
+ qdev_realize(dev, ...);
+|
+ qdev_realize_and_unref(dev, ...);
+)
+
+// bool DEVICE(dev)
+@@
+expression dev;
+expression prop, val;
+@@
+- object_property_set_bool(OBJECT(dev), prop, val, ... /* &error_abort */);
++ qdev_prop_set_bit(DEVICE(dev), prop, val);
+ ...
+(
+ sysbus_realize(SYS_BUS_DEVICE(dev), ...);
+|
+ qdev_realize(DEVICE(dev), ...);
+|
+ qdev_realize_and_unref(DEVICE(dev), ...);
+)
+
+// bool DEVICE(obj)
+@@
+expression obj;
+expression prop, val;
+@@
+- object_property_set_bool(obj, prop, val, ... /* &error_abort */);
++ qdev_prop_set_bit(DEVICE(obj), prop, val);
+ ...
+(
+ sysbus_realize(SYS_BUS_DEVICE(obj), ...);
+|
+ qdev_realize(DEVICE(obj), ...);
+|
+ qdev_realize_and_unref(DEVICE(obj), ...);
+)
+
+
+//
+// str
+//
+
+// str OBJECT
+@@
+typedef DeviceState;
+identifier dev;
+expression prop, val;
+@@
+ DeviceState *dev;
+ ...
+- object_property_set_str(OBJECT(dev), prop, val, ... /* &error_abort */);
++ qdev_prop_set_string(dev, prop, val);
+
+// str dev
+@@
+expression dev;
+expression prop, val;
+@@
+- object_property_set_str(OBJECT(dev), prop, val, ... /* &error_abort */);
++ qdev_prop_set_string(dev, prop, val);
+ ...
+(
+ sysbus_realize(SYS_BUS_DEVICE(dev), ...);
+|
+ qdev_realize(dev, ...);
+|
+ qdev_realize_and_unref(dev, ...);
+)
+
+// str DEVICE(dev)
+@@
+expression dev;
+expression prop, val;
+@@
+- object_property_set_str(OBJECT(dev), prop, val, ... /* &error_abort */);
++ qdev_prop_set_string(DEVICE(dev), prop, val);
+ ...
+(
+ sysbus_realize(SYS_BUS_DEVICE(dev), ...);
+|
+ qdev_realize(DEVICE(dev), ...);
+|
+ qdev_realize_and_unref(DEVICE(dev), ...);
+)
+
+// str DEVICE(obj)
+@@
+expression obj;
+expression prop, val;
+@@
+- object_property_set_str(obj, prop, val, ... /* &error_abort */);
++ qdev_prop_set_string(DEVICE(obj), prop, val);
+ ...
+(
+ sysbus_realize(SYS_BUS_DEVICE(obj), ...);
+|
+ qdev_realize(DEVICE(obj), ...);
+|
+ qdev_realize_and_unref(DEVICE(obj), ...);
+)
+
+
+// int OBJECT
+@@
+typedef DeviceState;
+identifier dev;
+expression prop, val;
+@@
+ DeviceState *dev;
+ ...
+- object_property_set_int(OBJECT(dev), prop, val, ... /* &error_abort */);
++ qdev_prop_set_XintXX(dev, prop, val);
+
+// int dev
+@@
+expression dev;
+expression prop, val;
+@@
+- object_property_set_int(OBJECT(dev), prop, val, ... /* &error_abort */);
++ qdev_prop_set_XintXX(dev, prop, val);
+ ...
+(
+ sysbus_realize(SYS_BUS_DEVICE(dev), ...);
+|
+ qdev_realize(dev, ...);
+|
+ qdev_realize_and_unref(dev, ...);
+)
+
+// int DEVICE(dev)
+@@
+expression dev;
+expression prop, val;
+@@
+- object_property_set_int(OBJECT(dev), prop, val, ... /* &error_abort */);
++ qdev_prop_set_XintXX(DEVICE(dev), prop, val);
+ ...
+(
+ sysbus_realize(SYS_BUS_DEVICE(dev), ...);
+|
+ qdev_realize(DEVICE(dev), ...);
+|
+ qdev_realize_and_unref(DEVICE(dev), ...);
+)
+
+// int DEVICE(obj)
+@@
+expression obj;
+expression prop, val;
+@@
+- object_property_set_int(obj, prop, val, ... /* &error_abort */);
++ qdev_prop_set_XintXX(DEVICE(obj), prop, val);
+ ...
+(
+ sysbus_realize(SYS_BUS_DEVICE(obj), ...);
+|
+ qdev_realize(DEVICE(obj), ...);
+|
+ qdev_realize_and_unref(DEVICE(obj), ...);
+)
+
+//
+// link
+//
+
+// link OBJECT
+@@
+typedef DeviceState;
+identifier dev;
+expression prop, val;
+@@
+ DeviceState *dev;
+ ...
+- object_property_set_link(OBJECT(dev), prop, val, ... /* &error_abort */);
++ qdev_prop_set_link(dev, prop, val);
+
+// link dev
+@@
+expression dev;
+expression prop, val;
+@@
+- object_property_set_link(OBJECT(dev), prop, val, ... /* &error_abort */);
++ qdev_prop_set_link(dev, prop, val);
+ ...
+(
+ sysbus_realize(SYS_BUS_DEVICE(dev), ...);
+|
+ qdev_realize(dev, ...);
+|
+ qdev_realize_and_unref(dev, ...);
+)
+
+// link DEVICE(dev)
+@@
+expression dev;
+expression prop, val;
+@@
+- object_property_set_link(OBJECT(dev), prop, val, ... /* &error_abort */);
++ qdev_prop_set_link(DEVICE(dev), prop, val);
+ ...
+(
+ sysbus_realize(SYS_BUS_DEVICE(dev), ...);
+|
+ qdev_realize(DEVICE(dev), ...);
+|
+ qdev_realize_and_unref(DEVICE(dev), ...);
+)
+
+// link DEVICE(obj)
+@@
+expression obj;
+expression prop, val;
+@@
+- object_property_set_link(obj, prop, val, ... /* &error_abort */);
++ qdev_prop_set_link(DEVICE(obj), prop, val);
+ ...
+(
+ sysbus_realize(SYS_BUS_DEVICE(obj), ...);
+|
+ qdev_realize(DEVICE(obj), ...);
+|
+ qdev_realize_and_unref(DEVICE(obj), ...);
+)
--
2.38.1
- [PATCH 00/19] hw: Set QDev properties using QDev API (part 1/3), Philippe Mathieu-Daudé, 2023/02/03
- [PATCH 01/19] NOTFORMERGE scripts/coccinelle: Add qom-qdev-prop.cocci,
Philippe Mathieu-Daudé <=
- [PATCH 02/19] hw/qdev: Introduce qdev_prop_set_link(), Philippe Mathieu-Daudé, 2023/02/03
- [PATCH 03/19] hw/acpi: Set QDev properties using QDev API, Philippe Mathieu-Daudé, 2023/02/03
- [PATCH 04/19] hw/audio: Set QDev properties using QDev API, Philippe Mathieu-Daudé, 2023/02/03
- [RFC PATCH 05/19] hw/core/numa: Set QDev properties using QDev API, Philippe Mathieu-Daudé, 2023/02/03
- [PATCH 06/19] hw/core/gpio: Set QDev properties using QDev API, Philippe Mathieu-Daudé, 2023/02/03
- [RFC PATCH 07/19] hw/scsi: Set QDev properties using QDev API, Philippe Mathieu-Daudé, 2023/02/03
- [PATCH 08/19] hw/usb: Set QDev properties using QDev API, Philippe Mathieu-Daudé, 2023/02/03
- [PATCH 09/19] hw/virtio: Set QDev properties using QDev API, Philippe Mathieu-Daudé, 2023/02/03
- [PATCH 10/19] hw/avr: Set QDev properties using QDev API, Philippe Mathieu-Daudé, 2023/02/03