From: Paolo Bonzini <pbonzini@redhat.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: Peter Maydell <peter.maydell@linaro.org>,
Richard Henderson <rth@twiddle.net>,
Eduardo Habkost <ehabkost@redhat.com>,
qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] When to use qemu/typedefs.h
Date: Wed, 31 Jul 2019 08:43:33 +0200 [thread overview]
Message-ID: <ff25a5cb-c62f-a148-8350-2f64b4f7ae4a@redhat.com> (raw)
In-Reply-To: <87zhku90bd.fsf@dusky.pond.sub.org>
On 31/07/19 08:37, Markus Armbruster wrote:
> Paolo Bonzini <pbonzini@redhat.com> writes:
>
>> On 30/07/19 15:15, Eric Blake wrote:
>>>> We occasionally give up and use types directly rather than their typedef
>>>> names, flouting the coding style. This patch does. Trades messing with
>>>> qemu/typedefs.h for having to write 'struct' a few times.
>>
>> I think Markus made the right call here. Using "struct Foo;" in headers
>> is a null price to pay if all you need is declaring a pointer-typed
>> field or parameter.
>
> Eduardo posted a patch to HACKING to clarify this non-usage of typedef
> is okay.
>
> Should we continue to mandate typedef names elsewhere? It adds
> cognitive load: you have to decide where to put the typedef, and when
> not to use it.
A lot of libraries we use (especially GLib) use typedefs, so I'd rather
keep them. Also, a mass replacement would be tens of thousands of
changed lines and not really practical.
>> Of course this doesn't apply if you have to embed a
>> struct directly, but then qemu/typedefs.h wouldn't help either.
>
> Yes, and if this leads to an inclusion cycle, I strongly suspect "fat"
> headers: since you can't embed something in itself, the cycle must
> involve different things, all bunched together in the same header.
>
>> In general unless you're adding a new subsystem, qemu/typedefs.h should
>> only decrease in size, never increase.
>
> This series grows it some. I'll try to avoid that for v2.
Let me review it first. :) Maybe some of them are good to keep.
Paolo
next prev parent reply other threads:[~2019-07-31 6:44 UTC|newest]
Thread overview: 80+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-07-26 12:05 [Qemu-devel] [PATCH 00/28] Tame a few "touch this, recompile the world" headers Markus Armbruster
2019-07-26 12:05 ` [Qemu-devel] [PATCH 01/28] include: Make headers more self-contained Markus Armbruster
2019-07-26 16:50 ` Alistair Francis
2019-07-26 12:05 ` [Qemu-devel] [PATCH 02/28] Include generated QAPI headers less Markus Armbruster
2019-07-26 12:05 ` [Qemu-devel] [PATCH 03/28] qapi: Split error.json off common.json Markus Armbruster
2019-07-26 13:53 ` Eric Blake
2019-07-26 14:34 ` Markus Armbruster
2019-07-26 12:05 ` [Qemu-devel] [PATCH 04/28] memory: Fix type of IOMMUMemoryRegionClass member @parent_class Markus Armbruster
2019-07-26 16:06 ` Philippe Mathieu-Daudé
2019-07-26 12:05 ` [Qemu-devel] [PATCH 05/28] queue: Drop superfluous #include qemu/atomic.h Markus Armbruster
2019-07-31 10:54 ` Thomas Huth
2019-07-26 12:05 ` [Qemu-devel] [PATCH 06/28] trace: Eliminate use of TARGET_FMT_plx Markus Armbruster
2019-07-26 16:04 ` Philippe Mathieu-Daudé
2019-07-26 12:05 ` [Qemu-devel] [PATCH 07/28] trace: Do not include qom/cpu.h into generated trace.h Markus Armbruster
2019-07-26 12:05 ` [Qemu-devel] [PATCH 08/28] Include sysemu/reset.h a lot less Markus Armbruster
2019-07-26 16:03 ` Philippe Mathieu-Daudé
2019-07-26 16:48 ` Alistair Francis
2019-07-26 12:05 ` [Qemu-devel] [PATCH 09/28] Include migration/qemu-file-types.h " Markus Armbruster
2019-07-26 12:05 ` [Qemu-devel] [PATCH 10/28] ide: Include hw/ide/internal a bit less outside hw/ide/ Markus Armbruster
2019-07-26 12:05 ` [Qemu-devel] [PATCH 11/28] typedefs: Separate incomplete types and function types Markus Armbruster
2019-07-26 12:05 ` [Qemu-devel] [PATCH 12/28] Include hw/irq.h a lot less Markus Armbruster
2019-07-26 16:52 ` Alistair Francis
2019-07-26 12:05 ` [Qemu-devel] [PATCH 13/28] Clean up inclusion of exec/cpu-common.h Markus Armbruster
2019-07-26 12:05 ` [Qemu-devel] [PATCH 14/28] migration: Move the VMStateDescription typedef to typedefs.h Markus Armbruster
2019-07-26 15:51 ` Philippe Mathieu-Daudé
2019-08-02 9:47 ` Paolo Bonzini
2019-07-26 12:05 ` [Qemu-devel] [PATCH 15/28] Include migration/vmstate.h less Markus Armbruster
2019-07-26 16:54 ` Alistair Francis
2019-07-26 12:05 ` [Qemu-devel] [PATCH 16/28] Include exec/memory.h slightly less Markus Armbruster
2019-07-26 12:05 ` [Qemu-devel] [PATCH 17/28] Include qom/object.h " Markus Armbruster
2019-07-26 15:53 ` Philippe Mathieu-Daudé
2019-07-26 12:05 ` [Qemu-devel] [PATCH 18/28] Include hw/hw.h exactly where needed Markus Armbruster
2019-07-26 22:14 ` Alistair Francis
2019-07-26 12:05 ` [Qemu-devel] [PATCH 19/28] Include qemu/queue.h slightly less Markus Armbruster
2019-07-26 12:05 ` [Qemu-devel] [PATCH 20/28] Include qemu/main-loop.h less Markus Armbruster
2019-07-26 12:05 ` [Qemu-devel] [PATCH 21/28] Include hw/qdev-properties.h less Markus Armbruster
2019-07-29 19:16 ` Eduardo Habkost
2019-07-30 6:33 ` Markus Armbruster
2019-07-26 12:05 ` [Qemu-devel] [PATCH 22/28] Include hw/boards.h a bit less Markus Armbruster
2019-07-26 20:29 ` Alistair Francis
2019-07-29 20:07 ` Eduardo Habkost
2019-07-30 11:03 ` Markus Armbruster
2019-07-29 20:17 ` Eduardo Habkost
2019-07-30 11:06 ` Markus Armbruster
2019-08-02 14:37 ` Markus Armbruster
2019-07-26 12:05 ` [Qemu-devel] [PATCH 23/28] numa: Don't include hw/boards.h into sysemu/numa.h Markus Armbruster
2019-07-29 19:44 ` Eduardo Habkost
2019-07-30 11:01 ` [Qemu-devel] When to use qemu/typedefs.h (was: [PATCH 23/28] numa: Don't include hw/boards.h into sysemu/numa.h) Markus Armbruster
2019-07-30 13:15 ` Eric Blake
2019-07-30 13:28 ` Paolo Bonzini
2019-07-30 21:07 ` [Qemu-devel] [RFC] HACKING: Document 'struct' keyword usage Eduardo Habkost
2019-07-30 21:32 ` Eric Blake
2019-07-31 8:35 ` Thomas Huth
2019-08-01 18:50 ` Eduardo Habkost
2019-08-01 19:23 ` Paolo Bonzini
2019-08-02 7:02 ` Thomas Huth
2019-08-01 17:21 ` Aleksandar Markovic
2019-07-31 6:37 ` [Qemu-devel] When to use qemu/typedefs.h Markus Armbruster
2019-07-31 6:43 ` Paolo Bonzini [this message]
2019-07-31 8:40 ` Thomas Huth
2019-07-31 10:45 ` Peter Maydell
2019-07-31 10:51 ` Daniel P. Berrangé
2019-07-30 20:55 ` [Qemu-devel] When to use qemu/typedefs.h (was: [PATCH 23/28] numa: Don't include hw/boards.h into sysemu/numa.h) Eduardo Habkost
2019-07-26 12:05 ` [Qemu-devel] [PATCH 24/28] Include sysemu/hostmem.h less Markus Armbruster
2019-07-26 15:57 ` Philippe Mathieu-Daudé
2019-07-29 19:47 ` Eduardo Habkost
2019-07-30 12:07 ` Igor Mammedov
2019-08-02 9:53 ` Paolo Bonzini
2019-08-02 13:20 ` Markus Armbruster
2019-07-26 12:05 ` [Qemu-devel] [PATCH 25/28] numa: Move remaining NUMA declarations from sysemu.h to numa.h Markus Armbruster
2019-07-26 15:57 ` Philippe Mathieu-Daudé
2019-07-29 19:48 ` Eduardo Habkost
2019-07-26 12:05 ` [Qemu-devel] [PATCH 26/28] Clean up inclusion of sysemu/sysemu.h Markus Armbruster
2019-07-26 12:05 ` [Qemu-devel] [PATCH 27/28] sysemu: Move the VMChangeStateEntry typedef to qemu/typedefs.h Markus Armbruster
2019-08-02 9:48 ` Paolo Bonzini
2019-08-02 13:16 ` Markus Armbruster
2019-08-02 13:21 ` Paolo Bonzini
2019-08-06 16:26 ` Markus Armbruster
2019-08-02 20:36 ` Markus Armbruster
2019-07-26 12:05 ` [Qemu-devel] [PATCH 28/28] Include sysemu/sysemu.h a lot less Markus Armbruster
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=ff25a5cb-c62f-a148-8350-2f64b4f7ae4a@redhat.com \
--to=pbonzini@redhat.com \
--cc=armbru@redhat.com \
--cc=ehabkost@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).