* [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).