* [PATCH] docs/devel: Document conventional file prefixes and suffixes
@ 2023-12-26 15:04 Philippe Mathieu-Daudé
2023-12-27 7:12 ` Zhao Liu
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: Philippe Mathieu-Daudé @ 2023-12-26 15:04 UTC (permalink / raw)
To: qemu-devel
Cc: Daniel Henrique Barboza, Peter Maydell, Michael S . Tsirkin,
Marc-André Lureau, Thomas Huth, Anton Johansson,
Michael Tokarev, Zhao Liu, Alex Bennée,
Daniel P. Berrangé, Philippe Mathieu-Daudé,
Juan Quintela, David Hildenbrand, Markus Armbruster,
Stefan Hajnoczi
Some header and source file names use common prefix / suffix
but we never really ruled a convention. Start doing so with
the current patterns from the tree.
Suggested-by: Alex Bennée <alex.bennee@linaro.org>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
docs/devel/style.rst | 49 ++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 49 insertions(+)
diff --git a/docs/devel/style.rst b/docs/devel/style.rst
index 2f68b50079..4da50eb2ea 100644
--- a/docs/devel/style.rst
+++ b/docs/devel/style.rst
@@ -162,6 +162,55 @@ pre-processor. Another common suffix is ``_impl``; it is used for the
concrete implementation of a function that will not be called
directly, but rather through a macro or an inline function.
+File Naming Conventions
+-----------------------
+
+Public headers
+~~~~~~~~~~~~~~
+
+Headers expected to be access by multiple subsystems must reside in
+the ``include/`` folder. Headers local to a subsystem should reside in
+the sysbsystem folder, if any (for example ``qobject/qobject-internal.h``
+can only be included by files within the ``qobject/`` folder).
+
+Header file prefix and suffix hints
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+When headers relate to common concept, it is useful to use a common
+prefix or suffix.
+
+When headers relate to the same (guest) subsystem, the subsystem name is
+often used as prefix. If headers are already in a folder named as the
+subsystem, prefixing them is optional.
+
+For example, hardware models related to the Aspeed systems are named
+using the ``aspeed_`` prefix.
+
+Headers related to the same (host) concept can also use a common prefix.
+For example OS specific headers use the ``-posix`` and ``-win32`` suffixes.
+
+Registered file suffixes
+~~~~~~~~~~~~~~~~~~~~~~~~
+
+* ``.inc``
+
+ Source files meant to be included by other source files as templates
+ must use the ``.c.inc`` suffix. Similarly, headers meant to be included
+ multiple times as template must use the ``.h.inc`` suffix.
+
+Recommended file prefixes / suffixes
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+* ``target`` and ``common`` suffixes
+
+ Files which are specific to a target should use the ``target`` suffix.
+ Such ``target`` suffixed headers usually *taint* the files including them
+ by making them target specific.
+
+ Files common to all targets should use the ``common`` suffix, to provide
+ a hint that these files can be safely included from common code.
+
+
Block structure
===============
--
2.41.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] docs/devel: Document conventional file prefixes and suffixes
2023-12-26 15:04 [PATCH] docs/devel: Document conventional file prefixes and suffixes Philippe Mathieu-Daudé
@ 2023-12-27 7:12 ` Zhao Liu
2023-12-27 9:09 ` Philippe Mathieu-Daudé
2023-12-27 21:07 ` Richard Henderson
2024-01-02 20:44 ` Stefan Hajnoczi
2 siblings, 1 reply; 5+ messages in thread
From: Zhao Liu @ 2023-12-27 7:12 UTC (permalink / raw)
To: Philippe Mathieu-Daudé
Cc: qemu-devel, Daniel Henrique Barboza, Peter Maydell,
Michael S . Tsirkin, Marc-André Lureau, Thomas Huth,
Anton Johansson, Michael Tokarev, Alex Bennée,
Daniel P. Berrangé, Juan Quintela, David Hildenbrand,
Markus Armbruster, Stefan Hajnoczi, Zhao Liu
Hi Philippe,
On Tue, Dec 26, 2023 at 04:04:41PM +0100, Philippe Mathieu-Daudé wrote:
> Date: Tue, 26 Dec 2023 16:04:41 +0100
> From: Philippe Mathieu-Daudé <philmd@linaro.org>
> Subject: [PATCH] docs/devel: Document conventional file prefixes and
> suffixes
> X-Mailer: git-send-email 2.41.0
>
> Some header and source file names use common prefix / suffix
> but we never really ruled a convention. Start doing so with
> the current patterns from the tree.
>
> Suggested-by: Alex Bennée <alex.bennee@linaro.org>
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> ---
> docs/devel/style.rst | 49 ++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 49 insertions(+)
>
> diff --git a/docs/devel/style.rst b/docs/devel/style.rst
> index 2f68b50079..4da50eb2ea 100644
> --- a/docs/devel/style.rst
> +++ b/docs/devel/style.rst
> @@ -162,6 +162,55 @@ pre-processor. Another common suffix is ``_impl``; it is used for the
> concrete implementation of a function that will not be called
> directly, but rather through a macro or an inline function.
>
> +File Naming Conventions
> +-----------------------
> +
> +Public headers
> +~~~~~~~~~~~~~~
> +
> +Headers expected to be access by multiple subsystems must reside in
> +the ``include/`` folder. Headers local to a subsystem should reside in
> +the sysbsystem folder, if any (for example ``qobject/qobject-internal.h``
> +can only be included by files within the ``qobject/`` folder).
> +
> +Header file prefix and suffix hints
> +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> +
> +When headers relate to common concept, it is useful to use a common
> +prefix or suffix.
> +
> +When headers relate to the same (guest) subsystem, the subsystem name is
> +often used as prefix. If headers are already in a folder named as the
> +subsystem, prefixing them is optional.
> +
> +For example, hardware models related to the Aspeed systems are named
> +using the ``aspeed_`` prefix.
> +
> +Headers related to the same (host) concept can also use a common prefix.
^^^^^^
Maybe "suffix"?
since below you provide examples of "suffix".
> +For example OS specific headers use the ``-posix`` and ``-win32`` suffixes.
> +
> +Registered file suffixes
> +~~~~~~~~~~~~~~~~~~~~~~~~
> +
> +* ``.inc``
> +
> + Source files meant to be included by other source files as templates
> + must use the ``.c.inc`` suffix. Similarly, headers meant to be included
> + multiple times as template must use the ``.h.inc`` suffix.
> +
> +Recommended file prefixes / suffixes
> +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> +
> +* ``target`` and ``common`` suffixes
> +
> + Files which are specific to a target should use the ``target`` suffix.
emm, it seems linux-use/* and bsd-user/* have many ``target`` prefix
headers. Should they get cleaned up?
> + Such ``target`` suffixed headers usually *taint* the files including them
> + by making them target specific.
> +
> + Files common to all targets should use the ``common`` suffix, to provide
> + a hint that these files can be safely included from common code.
> +
> +
An additional question that kind of confuses me is whether header file
naming should use "-" or "_" to connect prefixes/suffixes?
> Block structure
> ===============
>
> --
> 2.41.0
>
Thanks,
Zhao
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] docs/devel: Document conventional file prefixes and suffixes
2023-12-27 7:12 ` Zhao Liu
@ 2023-12-27 9:09 ` Philippe Mathieu-Daudé
0 siblings, 0 replies; 5+ messages in thread
From: Philippe Mathieu-Daudé @ 2023-12-27 9:09 UTC (permalink / raw)
To: Zhao Liu
Cc: qemu-devel, Daniel Henrique Barboza, Peter Maydell,
Michael S . Tsirkin, Marc-André Lureau, Thomas Huth,
Anton Johansson, Michael Tokarev, Alex Bennée,
Daniel P. Berrangé, Juan Quintela, David Hildenbrand,
Markus Armbruster, Stefan Hajnoczi
Hi,
On 27/12/23 08:12, Zhao Liu wrote:
> Hi Philippe,
>
> On Tue, Dec 26, 2023 at 04:04:41PM +0100, Philippe Mathieu-Daudé wrote:
>> Date: Tue, 26 Dec 2023 16:04:41 +0100
>> From: Philippe Mathieu-Daudé <philmd@linaro.org>
>> Subject: [PATCH] docs/devel: Document conventional file prefixes and
>> suffixes
>> X-Mailer: git-send-email 2.41.0
>>
>> Some header and source file names use common prefix / suffix
>> but we never really ruled a convention. Start doing so with
>> the current patterns from the tree.
>>
>> Suggested-by: Alex Bennée <alex.bennee@linaro.org>
>> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
>> ---
>> docs/devel/style.rst | 49 ++++++++++++++++++++++++++++++++++++++++++++
>> 1 file changed, 49 insertions(+)
>>
>> diff --git a/docs/devel/style.rst b/docs/devel/style.rst
>> index 2f68b50079..4da50eb2ea 100644
>> --- a/docs/devel/style.rst
>> +++ b/docs/devel/style.rst
>> @@ -162,6 +162,55 @@ pre-processor. Another common suffix is ``_impl``; it is used for the
>> concrete implementation of a function that will not be called
>> directly, but rather through a macro or an inline function.
>>
>> +File Naming Conventions
>> +-----------------------
>> +
>> +Public headers
>> +~~~~~~~~~~~~~~
>> +
>> +Headers expected to be access by multiple subsystems must reside in
>> +the ``include/`` folder. Headers local to a subsystem should reside in
>> +the sysbsystem folder, if any (for example ``qobject/qobject-internal.h``
>> +can only be included by files within the ``qobject/`` folder).
>> +
>> +Header file prefix and suffix hints
>> +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> +
>> +When headers relate to common concept, it is useful to use a common
>> +prefix or suffix.
>> +
>> +When headers relate to the same (guest) subsystem, the subsystem name is
>> +often used as prefix. If headers are already in a folder named as the
>> +subsystem, prefixing them is optional.
>> +
>> +For example, hardware models related to the Aspeed systems are named
>> +using the ``aspeed_`` prefix.
>> +
>> +Headers related to the same (host) concept can also use a common prefix.
> ^^^^^^
> Maybe "suffix"?
>
> since below you provide examples of "suffix".
Oops, indeed :)
>> +For example OS specific headers use the ``-posix`` and ``-win32`` suffixes.
>> +
>> +Registered file suffixes
>> +~~~~~~~~~~~~~~~~~~~~~~~~
>> +
>> +* ``.inc``
>> +
>> + Source files meant to be included by other source files as templates
>> + must use the ``.c.inc`` suffix. Similarly, headers meant to be included
>> + multiple times as template must use the ``.h.inc`` suffix.
>> +
>> +Recommended file prefixes / suffixes
>> +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> +
>> +* ``target`` and ``common`` suffixes
>> +
>> + Files which are specific to a target should use the ``target`` suffix.
>
> emm, it seems linux-use/* and bsd-user/* have many ``target`` prefix
> headers. Should they get cleaned up?
No, these are special to user emulation, and are defined for each
target, to be included once per target build, i.e. for Linux:
$ git grep '#include "target_' linux-user
linux-user/elfload.c:23:#include "target_signal.h"
linux-user/flatload.c:43:#include "target_flat.h"
linux-user/main.c:50:#include "target_elf.h"
linux-user/mmap.c:26:#include "target_mman.h"
linux-user/qemu.h:12:#include "target_syscall.h"
linux-user/strace.c:21:#include "target_mman.h"
linux-user/syscall.c:27:#include "target_mman.h"
linux-user/syscall.c:6313:#include "target_prctl.h"
linux-user/syscall.c:8252:#include "target_proc.h"
linux-user/syscall_defs.h:497:#include "target_signal.h"
linux-user/syscall_defs.h:701:#include "target_resource.h"
linux-user/syscall_defs.h:1230:#include "target_mman.h"
linux-user/syscall_defs.h:2256:#include "target_fcntl.h"
linux-user/syscall_defs.h:2577:#include "target_errno_defs.h"
linux-user/user-internals.h:184:#include "target_cpu.h"
linux-user/user-internals.h:185:#include "target_structs.h"
I'll add a paragraph to describe that.
>
>> + Such ``target`` suffixed headers usually *taint* the files including them
>> + by making them target specific.
>> +
>> + Files common to all targets should use the ``common`` suffix, to provide
>> + a hint that these files can be safely included from common code.
>> +
>> +
>
> An additional question that kind of confuses me is whether header file
> naming should use "-" or "_" to connect prefixes/suffixes?
Yeah, we use a mix of both with no particular preference.
Not sure it is worth cleaning only for aesthetic style, let's see
what other think.
>
>> Block structure
>> ===============
>>
>> --
>> 2.41.0
>>
Thanks!
Phil.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] docs/devel: Document conventional file prefixes and suffixes
2023-12-26 15:04 [PATCH] docs/devel: Document conventional file prefixes and suffixes Philippe Mathieu-Daudé
2023-12-27 7:12 ` Zhao Liu
@ 2023-12-27 21:07 ` Richard Henderson
2024-01-02 20:44 ` Stefan Hajnoczi
2 siblings, 0 replies; 5+ messages in thread
From: Richard Henderson @ 2023-12-27 21:07 UTC (permalink / raw)
To: Philippe Mathieu-Daudé, qemu-devel
On 12/27/23 02:04, Philippe Mathieu-Daudé wrote:
> Some header and source file names use common prefix / suffix
> but we never really ruled a convention. Start doing so with
> the current patterns from the tree.
>
> Suggested-by: Alex Bennée <alex.bennee@linaro.org>
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> ---
> docs/devel/style.rst | 49 ++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 49 insertions(+)
>
> diff --git a/docs/devel/style.rst b/docs/devel/style.rst
> index 2f68b50079..4da50eb2ea 100644
> --- a/docs/devel/style.rst
> +++ b/docs/devel/style.rst
> @@ -162,6 +162,55 @@ pre-processor. Another common suffix is ``_impl``; it is used for the
> concrete implementation of a function that will not be called
> directly, but rather through a macro or an inline function.
>
> +File Naming Conventions
> +-----------------------
> +
> +Public headers
> +~~~~~~~~~~~~~~
> +
> +Headers expected to be access by multiple subsystems must reside in
> +the ``include/`` folder. Headers local to a subsystem should reside in
> +the sysbsystem folder, if any (for example ``qobject/qobject-internal.h``
subsystem.
r~
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] docs/devel: Document conventional file prefixes and suffixes
2023-12-26 15:04 [PATCH] docs/devel: Document conventional file prefixes and suffixes Philippe Mathieu-Daudé
2023-12-27 7:12 ` Zhao Liu
2023-12-27 21:07 ` Richard Henderson
@ 2024-01-02 20:44 ` Stefan Hajnoczi
2 siblings, 0 replies; 5+ messages in thread
From: Stefan Hajnoczi @ 2024-01-02 20:44 UTC (permalink / raw)
To: Philippe Mathieu-Daudé
Cc: qemu-devel, Daniel Henrique Barboza, Peter Maydell,
Michael S . Tsirkin, Marc-André Lureau, Thomas Huth,
Anton Johansson, Michael Tokarev, Zhao Liu, Alex Bennée,
Daniel P. Berrangé, Juan Quintela, David Hildenbrand,
Markus Armbruster
[-- Attachment #1: Type: text/plain, Size: 4062 bytes --]
On Tue, Dec 26, 2023 at 04:04:41PM +0100, Philippe Mathieu-Daudé wrote:
> Some header and source file names use common prefix / suffix
> but we never really ruled a convention. Start doing so with
> the current patterns from the tree.
>
> Suggested-by: Alex Bennée <alex.bennee@linaro.org>
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> ---
> docs/devel/style.rst | 49 ++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 49 insertions(+)
>
> diff --git a/docs/devel/style.rst b/docs/devel/style.rst
> index 2f68b50079..4da50eb2ea 100644
> --- a/docs/devel/style.rst
> +++ b/docs/devel/style.rst
> @@ -162,6 +162,55 @@ pre-processor. Another common suffix is ``_impl``; it is used for the
> concrete implementation of a function that will not be called
> directly, but rather through a macro or an inline function.
>
> +File Naming Conventions
> +-----------------------
> +
> +Public headers
> +~~~~~~~~~~~~~~
> +
> +Headers expected to be access by multiple subsystems must reside in
s/access/accessed/
> +the ``include/`` folder. Headers local to a subsystem should reside in
> +the sysbsystem folder, if any (for example ``qobject/qobject-internal.h``
s/sysbsystem/subsystem/
> +can only be included by files within the ``qobject/`` folder).
> +
> +Header file prefix and suffix hints
> +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> +
> +When headers relate to common concept, it is useful to use a common
Either "common concepts" (plural) or "a common concept" (singular with
an indefinite article).
> +prefix or suffix.
> +
> +When headers relate to the same (guest) subsystem, the subsystem name is
> +often used as prefix. If headers are already in a folder named as the
> +subsystem, prefixing them is optional.
"named as the subsystem" sounds strange. I suggest something like:
"If headers are already in a folder with the subsystem in its name,
prefixing them is optional."
or
"Prefixing header files is optional if the folder name already contains
the subsystem name."
> +
> +For example, hardware models related to the Aspeed systems are named
> +using the ``aspeed_`` prefix.
> +
> +Headers related to the same (host) concept can also use a common prefix.
Is there a need to distinguish between "(guest)" above and "(host)" here
since we end up recommending the same thing for both?
> +For example OS specific headers use the ``-posix`` and ``-win32`` suffixes.
The previous sentence is about prefixes but this sentence focusses on
suffixes. That's a little confusing. I guess you mean "foo-posix" and
"foo-win32" have a common prefix. It may help to express it in terms of
the prefix instead of mentioning the suffix.
> +
> +Registered file suffixes
> +~~~~~~~~~~~~~~~~~~~~~~~~
> +
> +* ``.inc``
> +
> + Source files meant to be included by other source files as templates
> + must use the ``.c.inc`` suffix. Similarly, headers meant to be included
> + multiple times as template must use the ``.h.inc`` suffix.
> +
> +Recommended file prefixes / suffixes
> +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> +
> +* ``target`` and ``common`` suffixes
> +
> + Files which are specific to a target should use the ``target`` suffix.
> + Such ``target`` suffixed headers usually *taint* the files including them
> + by making them target specific.
Is there any particular macro or pattern for enforcing this? I remember
there are #error preprocessor directives in some header files to prevent
including them from the wrong source file, but I'm not sure if you're
referring to anything specific here.
> +
> + Files common to all targets should use the ``common`` suffix, to provide
> + a hint that these files can be safely included from common code.
This statement is too general. For example, files in util/ can be used
from common code but don't have a suffix. I think target and common
suffixes are useful when something is split into target-specific and
common parts. Otherwise it's not necessary.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2024-01-02 20:46 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-12-26 15:04 [PATCH] docs/devel: Document conventional file prefixes and suffixes Philippe Mathieu-Daudé
2023-12-27 7:12 ` Zhao Liu
2023-12-27 9:09 ` Philippe Mathieu-Daudé
2023-12-27 21:07 ` Richard Henderson
2024-01-02 20:44 ` Stefan Hajnoczi
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).