qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Markus Armbruster <armbru@redhat.com>
To: Eric Blake <eblake@redhat.com>
Cc: "Peter Maydell" <peter.maydell@linaro.org>,
	ehabkost@redhat.com, "Sergio Lopez" <slp@redhat.com>,
	mst@redhat.com, lersek@redhat.com, qemu-devel@nongnu.org,
	kraxel@redhat.com, pbonzini@redhat.com, imammedo@redhat.com,
	sgarzare@redhat.com, "Philippe Mathieu-Daudé" <philmd@redhat.com>,
	rth@twiddle.net
Subject: Re: [PATCH v5 01/10] hw/virtio: Factorize virtio-mmio headers
Date: Mon, 07 Oct 2019 11:32:03 +0200	[thread overview]
Message-ID: <877e5gj3zg.fsf@dusky.pond.sub.org> (raw)
In-Reply-To: <099a33d3-c1ab-f1c9-65e1-7dbd396a4817@redhat.com> (Eric Blake's message of "Thu, 3 Oct 2019 08:11:54 -0500")

Eric Blake <eblake@redhat.com> writes:

> On 10/3/19 6:26 AM, Sergio Lopez wrote:
>>
>> Philippe Mathieu-Daudé <philmd@redhat.com> writes:
>>
>>> On 10/2/19 1:30 PM, Sergio Lopez wrote:
>>>> Put QOM and main struct definition in a separate header file, so it
>>>> can be accessed from other components.
>>>>
>>>> Signed-off-by: Sergio Lopez <slp@redhat.com>
>
>>>> +
>>>> +#ifndef QEMU_VIRTIO_MMIO_H
>>>> +#define QEMU_VIRTIO_MMIO_H
>>>
>>> I'd rather use HW_VIRTIO_MMIO_H
>>
>> Looks like there isn't a consensus in this regard:
>>
>> $ grep "ifndef" *
>
>>
>> Do we have an actual policy written somewhere?
>
> Past history shows several cleanups near commit fe2611b016, including
> commit c0a9956b which mentions scripts/clean-header-guards
> specifically for this purpose.  So yes, we have a policy, although it
> is not always enforced in a timely manner.

We haven't adopted a strict policy.

I created clean-header-guards.pl to help me tidy up the resulting mess
somewhat.  The script can clean up "untidy" header guards.  This may
involve replacing the guard symbol.  It derives the replacement symbol
from the file name the obvious way: convert a-z to A_Z, replace any
character that isn't okay in an identifier by '_'.  Guard symbols chosen
that way are fairly unlikely to collide.

Existing guard symbols often omit directories, and the script tolerates
that.  For instance, in sub/dir/base.h, anything ending in BASE_H is
considered tidy enough.  Might be a bad idea.

I wouldn't go as far as calling this a policy.  Perhaps it should be.


commit 2dbc4ebc1712a5cf9e6a36327dce0b465abd5bbe
Author: Markus Armbruster <armbru@redhat.com>
Date:   Tue Jun 28 13:07:36 2016 +0200

    scripts: New clean-header-guards.pl
    
    The conventional way to ensure a header can be included multiple times
    is to bracket it like this:
    
        #ifndef HEADER_NAME_H
        #define HEADER_NAME_H
        ...
        #endif
    
    where HEADER_NAME_H is a symbol unique to this header.
    
    The endif may be optionally decorated like this:
    
        #endif /* HEADER_NAME_H */
    
    Unconventional ways present in our code:
    
    * Identifiers reserved for any use:
        #define _FILEOP_H
    
    * Lowercase (bad idea for object-like macros):
        #define __linux_video_vga_h__
    
    * Roundabout ways to say the same thing (and hide from grep):
        #if !defined(__PPC_MAC_H__)
        #endif /* !defined(__PPC_MAC_H__) */
    
    * Redundant values:
        #define HW_ALPHA_H 1
    
    * Funny redundant values:
        # define PXA_H                 "pxa.h"
    
    * Decorations with bangs:
    
        #endif /* !QEMU_ARM_GIC_INTERNAL_H */
    
      The negation actually makes sense, but almost all our header guard
      #endif decorations don't negate.
    
    * Useless decorations:
    
       #endif  /* audio.h */
    
    Header guards are not the place to show off creativity.  This script
    normalizes them to the conventional way, and cleans up whitespace
    while there.  It warns when it renames guard symbols, and explains how
    to find occurences of these symbols that may have to be updated
    manually.
    
    Another issue is use of the same guard symbol in multiple headers.
    That's okay only for headers that cannot be used together, such as the
    *-user/*/target_syscall.h.  This script can't tell, so it warns when
    it sees a reuse.
    
    The script also warns when preprocessing a header with its guard
    symbol defined produces anything but whitespace.
    
    The next commits will put the script to use.
    
    Signed-off-by: Markus Armbruster <armbru@redhat.com>
    Reviewed-by: Richard Henderson <rth@twiddle.net>


  parent reply	other threads:[~2019-10-07  9:33 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-02 11:30 [PATCH v5 00/10] Introduce the microvm machine type Sergio Lopez
2019-10-02 11:30 ` [PATCH v5 01/10] hw/virtio: Factorize virtio-mmio headers Sergio Lopez
2019-10-03 10:15   ` Philippe Mathieu-Daudé
2019-10-03 11:26     ` Sergio Lopez
2019-10-03 13:11       ` Eric Blake
2019-10-03 13:47         ` Philippe Mathieu-Daudé
2019-10-07  9:32         ` Markus Armbruster [this message]
2019-10-02 11:30 ` [PATCH v5 02/10] hw/i386/pc: rename functions shared with non-PC machines Sergio Lopez
2019-10-02 15:14   ` Philippe Mathieu-Daudé
2019-10-03 10:04     ` Sergio Lopez
2019-10-02 11:30 ` [PATCH v5 03/10] hw/i386/pc: move shared x86 functions to x86.c and export them Sergio Lopez
2019-10-03 10:27   ` Philippe Mathieu-Daudé
2019-10-03 11:14     ` Sergio Lopez
2019-10-02 11:30 ` [PATCH v5 04/10] hw/i386: split PCMachineState deriving X86MachineState from it Sergio Lopez
2019-10-03 10:24   ` Philippe Mathieu-Daudé
2019-10-03 11:15     ` Sergio Lopez
2019-10-02 11:30 ` [PATCH v5 05/10] hw/i386: make x86.c independent from PCMachineState Sergio Lopez
2019-10-02 11:30 ` [PATCH v5 06/10] fw_cfg: add "modify" functions for all types Sergio Lopez
2019-10-02 11:31 ` [PATCH v5 07/10] hw/intc/apic: reject pic ints if isa_pic == NULL Sergio Lopez
2019-10-02 11:31 ` [PATCH v5 08/10] roms: add microvm-bios (qboot) as binary and git submodule Sergio Lopez
2019-10-03 10:07   ` Sergio Lopez
2019-10-03 10:19     ` Paolo Bonzini
2019-10-03 11:16       ` Sergio Lopez
2019-10-02 11:31 ` [PATCH v5 09/10] docs/microvm.rst: document the new microvm machine type Sergio Lopez
2019-10-02 13:22   ` Paolo Bonzini
2019-10-02 13:37     ` Sergio Lopez
2019-10-02 11:31 ` [PATCH v5 10/10] hw/i386: Introduce the " Sergio Lopez
2019-10-02 12:05   ` Thomas Huth
2019-10-02 13:24     ` Sergio Lopez
2019-10-02 12:03 ` [PATCH v5 00/10] " no-reply
2019-10-02 12:14 ` no-reply

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=877e5gj3zg.fsf@dusky.pond.sub.org \
    --to=armbru@redhat.com \
    --cc=eblake@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=imammedo@redhat.com \
    --cc=kraxel@redhat.com \
    --cc=lersek@redhat.com \
    --cc=mst@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=philmd@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=rth@twiddle.net \
    --cc=sgarzare@redhat.com \
    --cc=slp@redhat.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).