diff mbox series

[v2,2/2] hw: vmmouse: drop DEFINE_PROP_PTR()

Message ID 1543312923-3074-3-git-send-email-liq3ea@gmail.com (mailing list archive)
State New, archived
Headers show
Series hw: vmmouse: use link property instead of DEFINE_PROP_PTR | expand

Commit Message

Li Qiang Nov. 27, 2018, 10:02 a.m. UTC
Use link property instead.

Signed-off-by: Li Qiang <liq3ea@gmail.com>
---

Change since v1: use error_abort in object_property_set_link()

 hw/i386/pc.c      |  3 ++-
 hw/i386/vmmouse.c | 17 +++++++++++------
 2 files changed, 13 insertions(+), 7 deletions(-)

Comments

Darren Kenny Nov. 27, 2018, 10:27 a.m. UTC | #1
Hi Li Qiang,

This is only a suggestion, I'm sure someone else might also correct
me, but I'm not sure the subject above really describes what is
happening in the commit as a whole.

It seems to miss the point that the main change here is to use a
link type property, so maybe it might be better written as something
along the lines of:

  Subject: [PATCH v2 2/2] hw: vmmouse: use link property instead of pointer
  
  Drop DEFINE_PROP_PTR() and replace with a link pointer via an
  instance init function (vmmouse_instance_initfn).

But that's only my interpretation, you may have a better version.

Thanks,

Darren.

On Tue, Nov 27, 2018 at 02:02:03AM -0800, Li Qiang wrote:
>Use link property instead.
>
>Signed-off-by: Li Qiang <liq3ea@gmail.com>
>---
>
>Change since v1: use error_abort in object_property_set_link()
>
> hw/i386/pc.c      |  3 ++-
> hw/i386/vmmouse.c | 17 +++++++++++------
> 2 files changed, 13 insertions(+), 7 deletions(-)
>
>diff --git a/hw/i386/pc.c b/hw/i386/pc.c
>index 73c7b777a0..64f0f233b8 100644
>--- a/hw/i386/pc.c
>+++ b/hw/i386/pc.c
>@@ -1552,7 +1552,8 @@ static void pc_superio_init(ISABus *isa_bus, bool create_fdctrl, bool no_vmport)
>     }
>     if (vmmouse) {
>         DeviceState *dev = DEVICE(vmmouse);
>-        qdev_prop_set_ptr(dev, "ps2_mouse", i8042);
>+        object_property_set_link(OBJECT(dev), OBJECT(i8042),
>+                                 "ps2_mouse", &error_abort);
>         qdev_init_nofail(dev);
>     }
>     port92 = isa_create_simple(isa_bus, TYPE_PORT92);
>diff --git a/hw/i386/vmmouse.c b/hw/i386/vmmouse.c
>index 4412eaf604..f63aac6673 100644
>--- a/hw/i386/vmmouse.c
>+++ b/hw/i386/vmmouse.c
>@@ -27,6 +27,7 @@
> #include "hw/i386/pc.h"
> #include "hw/input/i8042.h"
> #include "hw/qdev.h"
>+#include "qapi/error.h"
>
> /* debug only vmmouse */
> //#define DEBUG_VMMOUSE
>@@ -271,10 +272,15 @@ static void vmmouse_realizefn(DeviceState *dev, Error **errp)
>     vmport_register(VMMOUSE_DATA, vmmouse_ioport_read, s);
> }
>
>-static Property vmmouse_properties[] = {
>-    DEFINE_PROP_PTR("ps2_mouse", VMMouseState, ps2_mouse),
>-    DEFINE_PROP_END_OF_LIST(),
>-};
>+static void vmmouse_instance_initfn(Object *obj)
>+{
>+    VMMouseState *s = VMMOUSE(obj);
>+
>+    object_property_add_link(obj, "ps2_mouse", TYPE_I8042,
>+                             (Object **)&s->ps2_mouse,
>+                             qdev_prop_allow_set_link_before_realize,
>+                             0, &error_abort);
>+}
>
> static void vmmouse_class_initfn(ObjectClass *klass, void *data)
> {
>@@ -283,8 +289,6 @@ static void vmmouse_class_initfn(ObjectClass *klass, void *data)
>     dc->realize = vmmouse_realizefn;
>     dc->reset = vmmouse_reset;
>     dc->vmsd = &vmstate_vmmouse;
>-    dc->props = vmmouse_properties;
>-    /* Reason: pointer property "ps2_mouse" */
>     dc->user_creatable = false;
> }
>
>@@ -292,6 +296,7 @@ static const TypeInfo vmmouse_info = {
>     .name          = TYPE_VMMOUSE,
>     .parent        = TYPE_ISA_DEVICE,
>     .instance_size = sizeof(VMMouseState),
>+    .instance_init = vmmouse_instance_initfn,
>     .class_init    = vmmouse_class_initfn,
> };
>
>-- 
>2.11.0
>
>
Markus Armbruster Nov. 27, 2018, 12:38 p.m. UTC | #2
Darren Kenny <darren.kenny@oracle.com> writes:

> Hi Li Qiang,
>
> This is only a suggestion, I'm sure someone else might also correct
> me, but I'm not sure the subject above really describes what is
> happening in the commit as a whole.
>
> It seems to miss the point that the main change here is to use a
> link type property, so maybe it might be better written as something
> along the lines of:
>
>  Subject: [PATCH v2 2/2] hw: vmmouse: use link property instead of pointer
>  Drop DEFINE_PROP_PTR() and replace with a link pointer via an
>  instance init function (vmmouse_instance_initfn).

Yes, that's better.  Or take inspiration from recent similar work, such
as commit a8299ec1b24, and say something like

    vmmouse: Use link instead of pointer property

    According to qdev-properties.h, properties of pointer type should
    be avoided.  Turn "ps2_mouse" into a link.

Preferably with the commit message improved along these lines:
Reviewed-by: Markus Armbruster <armbru@redhat.com>

[...]
Darren Kenny Nov. 27, 2018, 4:57 p.m. UTC | #3
On Tue, Nov 27, 2018 at 01:38:35PM +0100, Markus Armbruster wrote:
>Darren Kenny <darren.kenny@oracle.com> writes:
>
>> Hi Li Qiang,
>>
>> This is only a suggestion, I'm sure someone else might also correct
>> me, but I'm not sure the subject above really describes what is
>> happening in the commit as a whole.
>>
>> It seems to miss the point that the main change here is to use a
>> link type property, so maybe it might be better written as something
>> along the lines of:
>>
>>  Subject: [PATCH v2 2/2] hw: vmmouse: use link property instead of pointer
>>  Drop DEFINE_PROP_PTR() and replace with a link pointer via an
>>  instance init function (vmmouse_instance_initfn).
>
>Yes, that's better.  Or take inspiration from recent similar work, such
>as commit a8299ec1b24, and say something like
>
>    vmmouse: Use link instead of pointer property
>
>    According to qdev-properties.h, properties of pointer type should
>    be avoided.  Turn "ps2_mouse" into a link.
>
>Preferably with the commit message improved along these lines:
>Reviewed-by: Markus Armbruster <armbru@redhat.com>
>
>[...]
>

With something like that,

Reviewed-by: Darren Kenny <darren.kenny@oracle.com>

Thanks,

Darren.
Li Qiang Nov. 29, 2018, 4:54 a.m. UTC | #4
Markus Armbruster <armbru@redhat.com> 于2018年11月27日周二 下午8:38写道:

> Darren Kenny <darren.kenny@oracle.com> writes:
>
> > Hi Li Qiang,
> >
> > This is only a suggestion, I'm sure someone else might also correct
> > me, but I'm not sure the subject above really describes what is
> > happening in the commit as a whole.
> >
> > It seems to miss the point that the main change here is to use a
> > link type property, so maybe it might be better written as something
> > along the lines of:
> >
> >  Subject: [PATCH v2 2/2] hw: vmmouse: use link property instead of
> pointer
> >  Drop DEFINE_PROP_PTR() and replace with a link pointer via an
> >  instance init function (vmmouse_instance_initfn).
>
> Yes, that's better.  Or take inspiration from recent similar work, such
> as commit a8299ec1b24, and say something like
>
>     vmmouse: Use link instead of pointer property
>
>     According to qdev-properties.h, properties of pointer type should
>     be avoided.  Turn "ps2_mouse" into a link.
>
> Preferably with the commit message improved along these lines:
> Reviewed-by: Markus Armbruster <armbru@redhat.com>
>


Hi Darren and Markus,

Thanks so much for your advice.
A new revision has been sent out.


Thanks,
Li Qiang


>
> [...]
>
diff mbox series

Patch

diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index 73c7b777a0..64f0f233b8 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -1552,7 +1552,8 @@  static void pc_superio_init(ISABus *isa_bus, bool create_fdctrl, bool no_vmport)
     }
     if (vmmouse) {
         DeviceState *dev = DEVICE(vmmouse);
-        qdev_prop_set_ptr(dev, "ps2_mouse", i8042);
+        object_property_set_link(OBJECT(dev), OBJECT(i8042),
+                                 "ps2_mouse", &error_abort);
         qdev_init_nofail(dev);
     }
     port92 = isa_create_simple(isa_bus, TYPE_PORT92);
diff --git a/hw/i386/vmmouse.c b/hw/i386/vmmouse.c
index 4412eaf604..f63aac6673 100644
--- a/hw/i386/vmmouse.c
+++ b/hw/i386/vmmouse.c
@@ -27,6 +27,7 @@ 
 #include "hw/i386/pc.h"
 #include "hw/input/i8042.h"
 #include "hw/qdev.h"
+#include "qapi/error.h"
 
 /* debug only vmmouse */
 //#define DEBUG_VMMOUSE
@@ -271,10 +272,15 @@  static void vmmouse_realizefn(DeviceState *dev, Error **errp)
     vmport_register(VMMOUSE_DATA, vmmouse_ioport_read, s);
 }
 
-static Property vmmouse_properties[] = {
-    DEFINE_PROP_PTR("ps2_mouse", VMMouseState, ps2_mouse),
-    DEFINE_PROP_END_OF_LIST(),
-};
+static void vmmouse_instance_initfn(Object *obj)
+{
+    VMMouseState *s = VMMOUSE(obj);
+
+    object_property_add_link(obj, "ps2_mouse", TYPE_I8042,
+                             (Object **)&s->ps2_mouse,
+                             qdev_prop_allow_set_link_before_realize,
+                             0, &error_abort);
+}
 
 static void vmmouse_class_initfn(ObjectClass *klass, void *data)
 {
@@ -283,8 +289,6 @@  static void vmmouse_class_initfn(ObjectClass *klass, void *data)
     dc->realize = vmmouse_realizefn;
     dc->reset = vmmouse_reset;
     dc->vmsd = &vmstate_vmmouse;
-    dc->props = vmmouse_properties;
-    /* Reason: pointer property "ps2_mouse" */
     dc->user_creatable = false;
 }
 
@@ -292,6 +296,7 @@  static const TypeInfo vmmouse_info = {
     .name          = TYPE_VMMOUSE,
     .parent        = TYPE_ISA_DEVICE,
     .instance_size = sizeof(VMMouseState),
+    .instance_init = vmmouse_instance_initfn,
     .class_init    = vmmouse_class_initfn,
 };