All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Marc-André Lureau" <marcandre.lureau@gmail.com>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: "Corey Minyard" <cminyard@mvista.com>,
	"Daniel P. Berrangé" <berrange@redhat.com>,
	"Eduardo Habkost" <ehabkost@redhat.com>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	qemu-ppc <qemu-ppc@nongnu.org>,
	"Magnus Damm" <magnus.damm@gmail.com>,
	"Jason Wang" <jasowang@redhat.com>,
	"Mark Cave-Ayland" <mark.cave-ayland@ilande.co.uk>,
	"QEMU Developers" <qemu-devel@nongnu.org>,
	"Fabien Chouteau" <chouteau@adacore.com>,
	"KONRAD Frederic" <frederic.konrad@adacore.com>,
	qemu-arm <qemu-arm@nongnu.org>,
	"Hervé Poussineau" <hpoussin@reactos.org>,
	"Aurelien Jarno" <aurelien@aurel32.net>,
	"Aleksandar Markovic" <amarkovic@wavecomp.com>,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	"Paul Burton" <pburton@wavecomp.com>,
	"Artyom Tarasenko" <atar4qemu@gmail.com>,
	"Richard Henderson" <rth@twiddle.net>
Subject: Re: [PATCH v3 13/33] serial: start making SerialMM a sysbus device
Date: Wed, 20 Nov 2019 15:03:50 +0400	[thread overview]
Message-ID: <CAJ+F1CL00TcaKz5LmC41urBULcO7meJuzuxW8nHmLQ6hG66tHg@mail.gmail.com> (raw)
In-Reply-To: <CAFEAcA-_fexNrzgdqwoaJVEyHMG-GAPZkEawiE59EX9+u_Kr5Q@mail.gmail.com>

Hi

On Wed, Nov 20, 2019 at 2:58 PM Peter Maydell <peter.maydell@linaro.org> wrote:
>
> On Wed, 20 Nov 2019 at 10:40, Marc-André Lureau
> <marcandre.lureau@gmail.com> wrote:
> > On Wed, Nov 20, 2019 at 2:36 PM Peter Maydell <peter.maydell@linaro.org> wrote:
> > > There are two problems here:
> > >  (1) "self" gives no hint at all about whether it's the Object*,
> > > the DeviceState*, or the SerialMM*. All of those are the
> > > object the method is operating on, but the type differences matter.
> >
> > "self" should have the type of the object that is being implemented.
> >
> > serial_mm_instance_init ->  SerialMM *self
>
> In a typical device implementation, some functions take the
> object as a "SerialMM" or other specific pointer. Some take
> an Object*. Some take a DeviceState*. Some take void*.
> Which of those is "the type of the object that is being implemented" ?

In OOP, you implement methods for a specific type. "self" is of the
type that is being implemented.

serial_mm_foo(SerialMM *self);

serial_mm_instance_init(Object *o) {
  SerialMM *self = SERIAL_MM(o);
  ..
}


If you have a generic function, not tied to a specific class, this
rule doesn't apply.

do_this(some arg, SerialMM *smm)

>
> > > (2) *Absolutely nobody anywhere else in any other device model
> > > is using the 'self' argument name*. It's not a convention if
> > > only this one file is using it, and adopting it here gives us
> > > absolutely no consistency -- exactly the opposite.
> >
> > Since there is no clear convention, then adding "self" isn't breaking
> > any convention.
>
> There is a clear convention, which I explained to you already
> (variable is named with some abbreviation/initialism of
> the type name, or sometimes just 's' for "state"). You are trying
> to write code which ignores that convention and does something
> else *which no other code is doing*. Please stop doing that -- in
> particular, don't do it in one device in the middle of a refactoring
> series.
>
> If you want to argue that we should change our convention for
> how we write QOM code, feel free -- but that should be a separate
> discussion and probably ought to come with a plan for how
> to do a general update of the codebase to avoid a weird
> mix of styles.
>

Fair enough

We can only change things incrementally, and while doing refactoring
is the right moment to write better and more readable code.


-- 
Marc-André Lureau


  reply	other threads:[~2019-11-20 11:15 UTC|newest]

Thread overview: 99+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-23 17:31 [PATCH v3 00/33] Clean-ups: qom-ify serial and remove QDEV_PROP_PTR Marc-André Lureau
2019-10-23 17:31 ` [PATCH v3 01/33] qdev: remove unused qdev_prop_int64 Marc-André Lureau
2019-11-18 14:01   ` Peter Maydell
2019-11-20  3:36     ` Marc-André Lureau
2019-10-23 17:31 ` [PATCH v3 02/33] sysbus: remove unused sysbus_try_create* Marc-André Lureau
2019-10-23 22:35   ` Philippe Mathieu-Daudé
2019-11-18 14:02   ` Peter Maydell
2019-10-23 17:31 ` [PATCH v3 03/33] sysbus: remove outdated comment Marc-André Lureau
2019-10-23 22:36   ` Philippe Mathieu-Daudé
2019-10-23 17:31 ` [PATCH v3 04/33] chardev: generate an internal id when none given Marc-André Lureau
2019-11-18 14:12   ` Peter Maydell
2019-11-18 18:54     ` Marc-André Lureau
2019-10-23 17:31 ` [PATCH v3 05/33] serial-pci-multi: factor out multi_serial_get_nr_ports Marc-André Lureau
2019-10-23 22:41   ` Philippe Mathieu-Daudé
2019-10-24  9:59     ` Marc-André Lureau
2019-10-23 17:31 ` [PATCH v3 06/33] serial: initial qom-ification Marc-André Lureau
2019-10-24  8:48   ` Marc-André Lureau
2019-10-23 17:31 ` [PATCH v3 07/33] serial: register vmsd with DeviceClass Marc-André Lureau
2019-11-18 14:21   ` Peter Maydell
2019-11-19 10:22     ` Marc-André Lureau
2019-11-19 10:33       ` Peter Maydell
2019-11-19 11:57         ` Marc-André Lureau
2019-11-20 18:54           ` Dr. David Alan Gilbert
2019-11-21  6:49             ` Marc-André Lureau
2019-10-23 17:31 ` [PATCH v3 08/33] serial: add "chardev" property Marc-André Lureau
2019-10-23 22:39   ` Philippe Mathieu-Daudé
2019-11-18 14:23   ` Peter Maydell
2019-10-23 17:31 ` [PATCH v3 09/33] serial: add "baudbase" property Marc-André Lureau
2019-10-23 22:40   ` Philippe Mathieu-Daudé
2019-11-18 14:26   ` Peter Maydell
2019-10-23 17:31 ` [PATCH v3 10/33] serial: add "instance-id" property Marc-André Lureau
2019-11-18 14:29   ` Peter Maydell
2019-11-19 10:32     ` Marc-André Lureau
2019-11-20  9:06   ` Marc-André Lureau
2019-10-23 17:31 ` [PATCH v3 11/33] serial: realize the serial device Marc-André Lureau
2019-10-23 17:31 ` [PATCH v3 12/33] serial: replace serial_exit_core() with unrealize Marc-André Lureau
2019-11-18 14:32   ` Peter Maydell
2019-11-20 12:32   ` Philippe Mathieu-Daudé
2019-10-23 17:31 ` [PATCH v3 13/33] serial: start making SerialMM a sysbus device Marc-André Lureau
2019-11-18 14:43   ` Peter Maydell
2019-11-20  7:34     ` Marc-André Lureau
2019-11-20 10:36       ` Peter Maydell
2019-11-20 10:40         ` Marc-André Lureau
2019-11-20 10:58           ` Peter Maydell
2019-11-20 11:03             ` Marc-André Lureau [this message]
2019-10-23 17:31 ` [PATCH v3 14/33] serial-mm: add "regshift" property Marc-André Lureau
2019-11-18 14:54   ` Peter Maydell
2019-11-20  7:53     ` Marc-André Lureau
2019-11-20 10:43       ` Peter Maydell
2019-10-23 17:31 ` [PATCH v3 15/33] serial-mm: add endianness property Marc-André Lureau
2019-11-18 15:02   ` Peter Maydell
2019-11-18 15:07   ` Peter Maydell
2019-11-20  7:59     ` Marc-André Lureau
2019-11-20 12:57   ` Philippe Mathieu-Daudé
2019-10-23 17:31 ` [PATCH v3 16/33] serial-mm: use sysbus facilities Marc-André Lureau
2019-11-18 15:09   ` Peter Maydell
2019-11-20  8:30     ` Marc-André Lureau
2019-11-20 10:46       ` Peter Maydell
2019-10-23 17:31 ` [PATCH v3 17/33] serial: make SerialIO a sysbus device Marc-André Lureau
2019-11-18 15:16   ` Peter Maydell
2019-11-20  8:41     ` Marc-André Lureau
2019-10-23 17:31 ` [PATCH v3 18/33] mips: inline serial_init Marc-André Lureau
2019-11-18 15:24   ` Peter Maydell
2019-11-20 11:14     ` Marc-André Lureau
2019-11-20  0:07   ` Aleksandar Markovic
2019-10-23 17:31 ` [PATCH v3 19/33] sm501: make SerialMM a child, export chardev property Marc-André Lureau
2019-10-23 22:57   ` Philippe Mathieu-Daudé
2019-10-24 10:28     ` Marc-André Lureau
2019-10-23 17:31 ` [PATCH v3 20/33] vmmouse: replace PROP_PTR with PROP_LINK Marc-André Lureau
2019-10-23 22:59   ` Philippe Mathieu-Daudé
2019-10-23 17:31 ` [PATCH v3 21/33] lance: " Marc-André Lureau
2019-10-23 23:00   ` Philippe Mathieu-Daudé
2019-10-24 11:09     ` Marc-André Lureau
2019-10-24 11:47       ` Philippe Mathieu-Daudé
2019-10-24 11:52         ` Peter Maydell
2019-10-24 18:07           ` Eduardo Habkost
2019-10-25  7:31             ` Peter Maydell
2019-10-24 12:25         ` Marc-André Lureau
2019-10-23 17:31 ` [PATCH v3 22/33] etraxfs: remove PROP_PTR usage Marc-André Lureau
2019-11-18 15:28   ` Peter Maydell
2019-10-23 17:31 ` [PATCH v3 23/33] dp8393x: replace PROP_PTR with PROP_LINK Marc-André Lureau
2019-10-23 23:02   ` Philippe Mathieu-Daudé
2019-10-24 11:12     ` Marc-André Lureau
2019-10-24 11:48       ` Philippe Mathieu-Daudé
2019-10-23 17:31 ` [PATCH v3 24/33] leon3: use qemu_irq framework instead of callback as property Marc-André Lureau
2019-11-18 14:15   ` KONRAD Frederic
2019-11-18 15:34   ` Peter Maydell
2019-10-23 17:31 ` [PATCH v3 25/33] sparc: move PIL irq handling to cpu.c Marc-André Lureau
2019-11-18 15:38   ` Peter Maydell
2019-10-23 17:31 ` [PATCH v3 26/33] RFC: mips/cps: fix setting saar property Marc-André Lureau
2019-10-23 17:31 ` [PATCH v3 27/33] cris: improve passing PIC interrupt vector to the CPU Marc-André Lureau
2019-11-18 15:40   ` Peter Maydell
2019-10-23 17:31 ` [PATCH v3 28/33] smbus-eeprom: remove PROP_PTR Marc-André Lureau
2019-10-23 17:31 ` [PATCH v3 29/33] omap-intc: " Marc-André Lureau
2019-10-23 17:31 ` [PATCH v3 30/33] omap-i2c: " Marc-André Lureau
2019-10-23 17:31 ` [PATCH v3 31/33] omap-gpio: " Marc-André Lureau
2019-10-23 17:31 ` [PATCH v3 32/33] qdev: remove PROP_MEMORY_REGION Marc-André Lureau
2019-10-23 23:07   ` Philippe Mathieu-Daudé
2019-10-23 17:31 ` [PATCH v3 33/33] qdev: remove QDEV_PROP_PTR Marc-André Lureau

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAJ+F1CL00TcaKz5LmC41urBULcO7meJuzuxW8nHmLQ6hG66tHg@mail.gmail.com \
    --to=marcandre.lureau@gmail.com \
    --cc=amarkovic@wavecomp.com \
    --cc=atar4qemu@gmail.com \
    --cc=aurelien@aurel32.net \
    --cc=berrange@redhat.com \
    --cc=chouteau@adacore.com \
    --cc=cminyard@mvista.com \
    --cc=edgar.iglesias@gmail.com \
    --cc=ehabkost@redhat.com \
    --cc=frederic.konrad@adacore.com \
    --cc=hpoussin@reactos.org \
    --cc=jasowang@redhat.com \
    --cc=magnus.damm@gmail.com \
    --cc=mark.cave-ayland@ilande.co.uk \
    --cc=mst@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=pburton@wavecomp.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-arm@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-ppc@nongnu.org \
    --cc=rth@twiddle.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.