qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Stefan Weil <sw@weilnetz.de>
To: qemu-devel@nongnu.org
Cc: peter.maydell@linaro.org, jan.kiszka@siemens.com, mjt@tls.msk.ru,
	armbru@redhat.com, blauwirbel@gmail.com, kraxel@redhat.com,
	xen-devel@lists.xensource.com, i.mitsyanko@samsung.com,
	mdroth@linux.vnet.ibm.com, avi@redhat.com,
	anthony.perard@citrix.com, lersek@redhat.com,
	stefanha@linux.vnet.ibm.com, stefano.stabellini@eu.citrix.com,
	Igor Mammedov <imammedo@redhat.com>,
	lcapitulino@redhat.com, rth@twiddle.net, kwolf@redhat.com,
	aliguori@us.ibm.com, mtosatti@redhat.com, pbonzini@redhat.com,
	afaerber@suse.de
Subject: [Qemu-devel] [RFC] How should QEMU code handle include statements (was: Re: [PATCH 0/5 v2] cpu: make a child of DeviceState)
Date: Mon, 20 Aug 2012 22:07:31 +0200	[thread overview]
Message-ID: <50329903.8000608@weilnetz.de> (raw)
In-Reply-To: <20120820134739.08bf6de4@thinkpad.mammed.net>

Am 20.08.2012 13:47, schrieb Igor Mammedov:
> On Mon, 20 Aug 2012 06:52:51 +0200
> Stefan Weil<sw@weilnetz.de>  wrote:
>> I'd prefer if you could keep the following simple pattern:
>>
>> * Start includes in *.c files with config.h (optionally)
>>     and qemu-common.h.
> Can't agree with you on this. I'd say that every header should be be self
> sufficient, include other headers if it uses types from them and NOT depend on
> the position where it's included, it should provide all its own deps.
>> * Don't include standard include files which are already
>>     included in qemu-common.h
> Probably initially qemu-common.h was intended to simplify inclusion
> of standard headers and glue stuff in multi-os build environment. but it seems
> to be become misused. It includes now a lot of stuff that is not common to
> every file it's included in.
> Perhaps we should split out of it std includes and glue layer into something
> like std/host-common.h and case on case basis move out other type
> definitions that are not common into there appropriate places. Like with
> qemu_irq.


There are several possible strategies regarding include statements:

1. Each header file which represents some public interface must include
    any header file which it depends on, so applications which include
    xxx.h can rely on the fact that they won't need anything else to
    compile xxx.h.

    To minimize dependencies, this rule can be extended: each header
    file must not include unneeded header files.

    Usually header files in /usr/include are built according to these rules.

2. There is one header file (or a small set of header files) which includes
    a basic set of features which normal code needs. Any C code file starts
    by including this header file.

    Other header files can rely on the fact that the basic set of features
    are already available.

3. In a modification of (2), each header file can include the basic
    header file(s).

4. The status quo of QEMU is a wild mixture of those strategies.

IMHO, there should be a consensus about the strategy which is used
for QEMU code.

While I personally prefer (1) and used it for my first contributions,
QEMU introduced qemu-common.h. I had the impression that from then on
QEMU preferred strategy (2). Obviously not everybody shares that
impression.

Which strategy / rule do we want to use for QEMU code?

Regards,

Stefan Weil

  reply	other threads:[~2012-08-20 20:07 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-19 23:39 [Qemu-devel] [PATCH 0/5 v2] cpu: make a child of DeviceState Igor Mammedov
2012-08-19 23:39 ` [Qemu-devel] [PATCH 1/5] move qemu_irq typedef out of cpu-common.h Igor Mammedov
2012-08-20  4:41   ` Stefan Weil
2012-08-20 11:13     ` Igor Mammedov
2012-08-20 19:46       ` Blue Swirl
2012-08-20 20:14         ` Anthony Liguori
2012-08-19 23:39 ` [Qemu-devel] [PATCH 2/5] qdev: split up header so it can be used in cpu.h Igor Mammedov
2012-08-19 23:39 ` [Qemu-devel] [PATCH 3/5] qapi-types.h doesn't really need to include qemu-common.h Igor Mammedov
2012-08-20 15:22   ` Luiz Capitulino
2012-08-20 19:59     ` Igor Mammedov
2012-08-19 23:39 ` [Qemu-devel] [PATCH 4/5] cleanup error.h, included qapi-types.h aready has stdbool.h Igor Mammedov
2012-08-20 15:28   ` Luiz Capitulino
2012-08-20 20:00     ` [Qemu-devel] [Xen-devel] " Igor Mammedov
2012-08-19 23:39 ` [Qemu-devel] [PATCH 5/5] make CPU a child of DeviceState Igor Mammedov
2012-08-21 14:03   ` Eduardo Habkost
2012-08-20  4:52 ` [Qemu-devel] [PATCH 0/5 v2] cpu: make " Stefan Weil
2012-08-20 11:47   ` Igor Mammedov
2012-08-20 20:07     ` Stefan Weil [this message]
2012-08-21 10:19       ` [Qemu-devel] [RFC] How should QEMU code handle include statements Avi Kivity

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=50329903.8000608@weilnetz.de \
    --to=sw@weilnetz.de \
    --cc=afaerber@suse.de \
    --cc=aliguori@us.ibm.com \
    --cc=anthony.perard@citrix.com \
    --cc=armbru@redhat.com \
    --cc=avi@redhat.com \
    --cc=blauwirbel@gmail.com \
    --cc=i.mitsyanko@samsung.com \
    --cc=imammedo@redhat.com \
    --cc=jan.kiszka@siemens.com \
    --cc=kraxel@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=lcapitulino@redhat.com \
    --cc=lersek@redhat.com \
    --cc=mdroth@linux.vnet.ibm.com \
    --cc=mjt@tls.msk.ru \
    --cc=mtosatti@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=rth@twiddle.net \
    --cc=stefanha@linux.vnet.ibm.com \
    --cc=stefano.stabellini@eu.citrix.com \
    --cc=xen-devel@lists.xensource.com \
    /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).