* [PATCH] Document the current coding style conventions.
@ 2012-03-14 17:27 David Vrabel
2012-03-15 9:11 ` Jan Beulich
` (2 more replies)
0 siblings, 3 replies; 9+ messages in thread
From: David Vrabel @ 2012-03-14 17:27 UTC (permalink / raw)
To: xen-devel; +Cc: Keir Fraser, David Vrabel
From: David Vrabel <david.vrabel@citrix.com>
Based on a version originally posted in 2007.
http://lists.xen.org/archives/html/xen-devel/2007-06/msg00070.html
Signed-off-by: David Vrabel <david.vrabel@citrix.com>
---
docs/misc/coding_style.txt | 100 ++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 100 insertions(+), 0 deletions(-)
create mode 100644 docs/misc/coding_style.txt
diff --git a/docs/misc/coding_style.txt b/docs/misc/coding_style.txt
new file mode 100644
index 0000000..2ece1ec
--- /dev/null
+++ b/docs/misc/coding_style.txt
@@ -0,0 +1,100 @@
+Coding Style for the Xen Hypervisor
+===================================
+
+This coding style is used for C code that is part of the Xen
+Hypervisor itself, or part of the associated user space tools. Guest
+operating system code may use the native coding style of that code
+base. The goal of this file is to document the main points of the Xen
+coding style, particularly where they differ from normal Linux
+convention.
+
+libxl has its own coding style documented in tools/libxl/CODING_STYLE.
+
+Indentation
+-----------
+
+Indenting uses spaces, not tabs - in contrast to Linux. An indent
+level consists of four spaces. Code within blocks is indented by one
+extra indent level. The enclosing braces of a block are indented the
+same as the code _outside_ the block. e.g.
+
+void fun(void)
+{
+ /* One level of indent. */
+
+ {
+ /* A second level of indent. */
+ }
+}
+
+White space
+-----------
+
+Space characters are used to spread out logical statements, such as in
+the condition of an if or while. Spaces are placed between the
+keyword and the brackets surrounding the condition, between the
+brackets and the condition itself, and around binary operators (except
+the structure memory operators, '.' and '->'). e.g.
+
+if ( (wibble & wombat) == 42 )
+{
+ ...
+
+There should be no trailing white space at the end of lines (including
+after the opening /* of a comment block).
+
+Bracing
+-------
+
+Braces ('{' and '}') are usually placed on a line of their own, except
+for the do/while loop. This is unlike the Linux coding style and
+unlike K&R. do/while loops are an exception. e.g.:
+
+if ( condition )
+{
+ /* Do stuff. */
+}
+
+while ( condition )
+{
+ /* Do stuff. */
+}
+
+do {
+ /* Do stuff. */
+} while ( condition );
+
+etc.
+
+Braces should be omitted for blocks with a single statement. e.g.,
+
+if ( condition )
+ single_statement();
+
+Comments
+--------
+
+Only C style /* ... */ comments are to be used. C++ style // comments
+should not be used in submitted code. Multi-word comments should
+begin with a capital letter and end with a full stop.
+
+/*
+ * Example, multi-line comment block.
+ *
+ * Note beginning and end markers on separate lines and leading '*'.
+ */
+
+Emacs local variables
+---------------------
+
+A comment block containing local variables for emacs is permitted at
+the end of files. It should be:
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
--
1.7.2.5
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH] Document the current coding style conventions.
2012-03-14 17:27 [PATCH] Document the current coding style conventions David Vrabel
@ 2012-03-15 9:11 ` Jan Beulich
2012-03-15 9:34 ` Ian Campbell
2012-03-15 18:23 ` Dario Faggioli
2 siblings, 0 replies; 9+ messages in thread
From: Jan Beulich @ 2012-03-15 9:11 UTC (permalink / raw)
To: David Vrabel; +Cc: Keir Fraser, xen-devel
>>> On 14.03.12 at 18:27, David Vrabel <david.vrabel@citrix.com> wrote:
> From: David Vrabel <david.vrabel@citrix.com>
>
> Based on a version originally posted in 2007.
> http://lists.xen.org/archives/html/xen-devel/2007-06/msg00070.html
>
> Signed-off-by: David Vrabel <david.vrabel@citrix.com>
> ---
> docs/misc/coding_style.txt | 100
> ++++++++++++++++++++++++++++++++++++++++++++
> 1 files changed, 100 insertions(+), 0 deletions(-)
> create mode 100644 docs/misc/coding_style.txt
>
> diff --git a/docs/misc/coding_style.txt b/docs/misc/coding_style.txt
> new file mode 100644
> index 0000000..2ece1ec
> --- /dev/null
> +++ b/docs/misc/coding_style.txt
> @@ -0,0 +1,100 @@
> +Coding Style for the Xen Hypervisor
> +===================================
> +
> +This coding style is used for C code that is part of the Xen
> +Hypervisor itself, or part of the associated user space tools. Guest
> +operating system code may use the native coding style of that code
> +base. The goal of this file is to document the main points of the Xen
> +coding style, particularly where they differ from normal Linux
> +convention.
> +
> +libxl has its own coding style documented in tools/libxl/CODING_STYLE.
> +
> +Indentation
> +-----------
> +
> +Indenting uses spaces, not tabs - in contrast to Linux. An indent
> +level consists of four spaces. Code within blocks is indented by one
> +extra indent level. The enclosing braces of a block are indented the
> +same as the code _outside_ the block. e.g.
> +
> +void fun(void)
> +{
> + /* One level of indent. */
> +
> + {
> + /* A second level of indent. */
> + }
> +}
An exception should probably be declared for code pulled over from
Linux almost unmodified.
Further, Linux'es document doesn't say anything about the
indentation of long function parameter and argument lists. Do we
want to leave this to the authors' taste as well?
> +
> +White space
> +-----------
> +
> +Space characters are used to spread out logical statements, such as in
> +the condition of an if or while. Spaces are placed between the
> +keyword and the brackets surrounding the condition, between the
> +brackets and the condition itself, and around binary operators (except
> +the structure memory operators, '.' and '->'). e.g.
> +
> +if ( (wibble & wombat) == 42 )
> +{
> + ...
> +
> +There should be no trailing white space at the end of lines (including
> +after the opening /* of a comment block).
> +
> +Bracing
> +-------
> +
> +Braces ('{' and '}') are usually placed on a line of their own, except
> +for the do/while loop. This is unlike the Linux coding style and
> +unlike K&R. do/while loops are an exception. e.g.:
> +
> +if ( condition )
> +{
> + /* Do stuff. */
> +}
> +
> +while ( condition )
> +{
> + /* Do stuff. */
> +}
> +
> +do {
> + /* Do stuff. */
> +} while ( condition );
> +
> +etc.
> +
> +Braces should be omitted for blocks with a single statement. e.g.,
"may" is probably the better term, as there's quite a number of
examples where this is not the case. (I would personally like the
more strict form you gave, as I dislike those superfluous braces).
> +
> +if ( condition )
> + single_statement();
> +
> +Comments
> +--------
> +
> +Only C style /* ... */ comments are to be used. C++ style // comments
> +should not be used in submitted code. Multi-word comments should
> +begin with a capital letter and end with a full stop.
> +
> +/*
> + * Example, multi-line comment block.
> + *
> + * Note beginning and end markers on separate lines and leading '*'.
> + */
The statement prior to the example only mentions multi-word
comments, whereas the example is a multi-line one. Perhaps the
statement could be extended to demand the /* and */ to be on
separate lines for multi-line comments.
Nothing is being said on maximum line length. In particular it'd be nice
to clarify whether we want to follow Linux'es relatively recent (in 3.1)
move towards not breaking up printk() messages (which I'm in favor
of, and would even volunteer to clean up, as I really dislike having to
guess how long lines got broken up in the sources - it wasn't just
once that I had to make a couple of tries until I managed to locate a
certain message).
Jan
> +
> +Emacs local variables
> +---------------------
> +
> +A comment block containing local variables for emacs is permitted at
> +the end of files. It should be:
> +
> +/*
> + * Local variables:
> + * mode: C
> + * c-file-style: "BSD"
> + * c-basic-offset: 4
> + * indent-tabs-mode: nil
> + * End:
> + */
> --
> 1.7.2.5
>
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xen.org
> http://lists.xen.org/xen-devel
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] Document the current coding style conventions.
2012-03-14 17:27 [PATCH] Document the current coding style conventions David Vrabel
2012-03-15 9:11 ` Jan Beulich
@ 2012-03-15 9:34 ` Ian Campbell
2012-03-15 10:54 ` David Vrabel
2012-03-19 11:18 ` David Vrabel
2012-03-15 18:23 ` Dario Faggioli
2 siblings, 2 replies; 9+ messages in thread
From: Ian Campbell @ 2012-03-15 9:34 UTC (permalink / raw)
To: David Vrabel; +Cc: xen-devel@lists.xensource.com, Keir (Xen.org)
On Wed, 2012-03-14 at 17:27 +0000, David Vrabel wrote:
> From: David Vrabel <david.vrabel@citrix.com>
>
> Based on a version originally posted in 2007.
> http://lists.xen.org/archives/html/xen-devel/2007-06/msg00070.html
>
> Signed-off-by: David Vrabel <david.vrabel@citrix.com>
> ---
> docs/misc/coding_style.txt | 100 ++++++++++++++++++++++++++++++++++++++++++++
Thanks for this!
I think this should be CODING_STYLE at the top level (in the vein of
top-level COPYRIGHT + local overrides) and commence with an intro such
as:
The Xen coding style described below is the coding style used by
the Xen hypervisor itself (xen/*) as well as various associated
low-level libraries (e.g. tools/libxc/*).
An exception is made for files which are imported from an
external source. In these cases the prevailing coding style of
the upstream source is generally used (commonly the Linux coding
style).
Other parts of the code base may use other coding styles,
sometimes explicitly (e.g. tools/libxl/CODING_STYLE) but often
implicitly (Linux coding style is fairly common). In general you
should copy the style of the surrounding code. If you are unsure
please ask.
[...]
> +Emacs local variables
> +---------------------
> +
> +A comment block containing local variables for emacs is permitted at
> +the end of files. It should be:
> +
> +/*
> + * Local variables:
> + * mode: C
> + * c-file-style: "BSD"
> + * c-basic-offset: 4
> + * indent-tabs-mode: nil
> + * End:
> + */
You mentioned a while ago that the comment block we've been cutting and
pasting around the place was buggy. Is this the prevailing buggy one or
did you fix it up here?
Ian.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] Document the current coding style conventions.
2012-03-15 9:34 ` Ian Campbell
@ 2012-03-15 10:54 ` David Vrabel
2012-03-15 11:07 ` Ian Campbell
2012-03-19 11:18 ` David Vrabel
1 sibling, 1 reply; 9+ messages in thread
From: David Vrabel @ 2012-03-15 10:54 UTC (permalink / raw)
To: Ian Campbell; +Cc: xen-devel@lists.xensource.com, Keir (Xen.org)
On 15/03/12 09:34, Ian Campbell wrote:
> On Wed, 2012-03-14 at 17:27 +0000, David Vrabel wrote:
>> +Emacs local variables
>> +---------------------
>> +
>> +A comment block containing local variables for emacs is permitted at
>> +the end of files. It should be:
>> +
>> +/*
>> + * Local variables:
>> + * mode: C
>> + * c-file-style: "BSD"
>> + * c-basic-offset: 4
>> + * indent-tabs-mode: nil
>> + * End:
>> + */
>
> You mentioned a while ago that the comment block we've been cutting and
> pasting around the place was buggy. Is this the prevailing buggy one or
> did you fix it up here?
This is the correct one (according to the documentation). Should all
the existing ones be fixed up all at once?
David
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] Document the current coding style conventions.
2012-03-15 10:54 ` David Vrabel
@ 2012-03-15 11:07 ` Ian Campbell
0 siblings, 0 replies; 9+ messages in thread
From: Ian Campbell @ 2012-03-15 11:07 UTC (permalink / raw)
To: David Vrabel; +Cc: xen-devel@lists.xensource.com, Keir (Xen.org)
On Thu, 2012-03-15 at 10:54 +0000, David Vrabel wrote:
> On 15/03/12 09:34, Ian Campbell wrote:
> > On Wed, 2012-03-14 at 17:27 +0000, David Vrabel wrote:
> >> +Emacs local variables
> >> +---------------------
> >> +
> >> +A comment block containing local variables for emacs is permitted at
> >> +the end of files. It should be:
> >> +
> >> +/*
> >> + * Local variables:
> >> + * mode: C
> >> + * c-file-style: "BSD"
> >> + * c-basic-offset: 4
> >> + * indent-tabs-mode: nil
> >> + * End:
> >> + */
> >
> > You mentioned a while ago that the comment block we've been cutting and
> > pasting around the place was buggy. Is this the prevailing buggy one or
> > did you fix it up here?
>
> This is the correct one (according to the documentation).
and the docs are right i.e. it does the right thing? ;-)
> Should all the existing ones be fixed up all at once?
I guess it is just a sed invocation? In which case it seems reasonable
to do it as a big bang change.
Ian.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] Document the current coding style conventions.
2012-03-14 17:27 [PATCH] Document the current coding style conventions David Vrabel
2012-03-15 9:11 ` Jan Beulich
2012-03-15 9:34 ` Ian Campbell
@ 2012-03-15 18:23 ` Dario Faggioli
2012-03-16 9:23 ` Jan Beulich
2 siblings, 1 reply; 9+ messages in thread
From: Dario Faggioli @ 2012-03-15 18:23 UTC (permalink / raw)
To: David Vrabel; +Cc: xen-devel, Keir Fraser
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On Wed, Mar 14, 2012 at 6:27 PM, David Vrabel <david.vrabel@citrix.com> wrote:
>
> +Bracing
> +-------
> +
> +Braces ('{' and '}') are usually placed on a line of their own, except
> +for the do/while loop. This is unlike the Linux coding style and
> +unlike K&R. do/while loops are an exception. e.g.:
> +
> +if ( condition )
> +{
> + /* Do stuff. */
> +}
> +
>
Would it be worth to cite what's the preferred style in case of
else/else if ? I guess something like the below?
if ( xxx )
{
zzz
} else {
yyy
}
> +Braces should be omitted for blocks with a single statement. e.g.,
> +
> +if ( condition )
> + single_statement();
> +
>
And what if the *then* branch has one statement and the *else*
has more (or vice versa)?
Or is that too much of a nitpicking? :-)
Thanks and Regards,
Dario
- --
<<This happens because I choose it to happen!>> (Raistlin Majere)
- ---------------------------------------------------------------------------------------------------
Dario Faggioli, Ph.D, http://retis.sssup.it/people/faggioli
Senior Software Engineer, Citrix Systems R&D Ltd., Cambridge (UK)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)
iEYEARECAAYFAk9iM28ACgkQk4XaBE3IOsSYgACeIFG4qzHBPHIzqPb7PdPkZZmm
01YAoIakO0RrLJ0eVyB4NXXuoMDKIxAf
=4gCT
-----END PGP SIGNATURE-----
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] Document the current coding style conventions.
2012-03-15 18:23 ` Dario Faggioli
@ 2012-03-16 9:23 ` Jan Beulich
0 siblings, 0 replies; 9+ messages in thread
From: Jan Beulich @ 2012-03-16 9:23 UTC (permalink / raw)
To: David Vrabel, Dario Faggioli; +Cc: xen-devel, Keir Fraser
>>> On 15.03.12 at 19:23, Dario Faggioli <raistlin@linux.it> wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> On Wed, Mar 14, 2012 at 6:27 PM, David Vrabel <david.vrabel@citrix.com> wrote:
>>
>> +Bracing
>> +-------
>> +
>> +Braces ('{' and '}') are usually placed on a line of their own, except
>> +for the do/while loop. This is unlike the Linux coding style and
>> +unlike K&R. do/while loops are an exception. e.g.:
>> +
>> +if ( condition )
>> +{
>> + /* Do stuff. */
>> +}
>> +
>>
> Would it be worth to cite what's the preferred style in case of
> else/else if ? I guess something like the below?
>
> if ( xxx )
> {
> zzz
> } else {
> yyy
> }
}
else
{
>> +Braces should be omitted for blocks with a single statement. e.g.,
>> +
>> +if ( condition )
>> + single_statement();
>> +
>>
> And what if the *then* branch has one statement and the *else*
> has more (or vice versa)?
if ( ... )
<statement>
else
{
<statements>
}
or, respectively,
if ( ... )
{
<statements>
}
else
<statement>
would be my view on this.
> Or is that too much of a nitpicking? :-)
I'd say this should be taken as implicit from the other pieces.
Jan
> Thanks and Regards,
> Dario
>
> - --
> <<This happens because I choose it to happen!>> (Raistlin Majere)
> - ---------------------------------------------------------------------------------------------------
> Dario Faggioli, Ph.D, http://retis.sssup.it/people/faggioli
> Senior Software Engineer, Citrix Systems R&D Ltd., Cambridge (UK)
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.12 (GNU/Linux)
>
> iEYEARECAAYFAk9iM28ACgkQk4XaBE3IOsSYgACeIFG4qzHBPHIzqPb7PdPkZZmm
> 01YAoIakO0RrLJ0eVyB4NXXuoMDKIxAf
> =4gCT
> -----END PGP SIGNATURE-----
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xen.org
> http://lists.xen.org/xen-devel
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] Document the current coding style conventions.
2012-03-15 9:34 ` Ian Campbell
2012-03-15 10:54 ` David Vrabel
@ 2012-03-19 11:18 ` David Vrabel
2012-03-19 11:23 ` Ian Campbell
1 sibling, 1 reply; 9+ messages in thread
From: David Vrabel @ 2012-03-19 11:18 UTC (permalink / raw)
To: Ian Campbell; +Cc: xen-devel@lists.xensource.com, Keir (Xen.org)
On 15/03/12 09:34, Ian Campbell wrote:
> On Wed, 2012-03-14 at 17:27 +0000, David Vrabel wrote:
>> From: David Vrabel <david.vrabel@citrix.com>
>>
>> Based on a version originally posted in 2007.
>> http://lists.xen.org/archives/html/xen-devel/2007-06/msg00070.html
>>
>> Signed-off-by: David Vrabel <david.vrabel@citrix.com>
>> ---
>> docs/misc/coding_style.txt | 100 ++++++++++++++++++++++++++++++++++++++++++++
>
> Thanks for this!
>
> I think this should be CODING_STYLE at the top level (in the vein of
> top-level COPYRIGHT + local overrides).
The way I think most people will discover this will be via the
submitting patch page on the wiki. If this doc is in the top-level can
it be linked from the wiki?
> [snip useful intro text]
I've incorporated this, thanks.
David
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] Document the current coding style conventions.
2012-03-19 11:18 ` David Vrabel
@ 2012-03-19 11:23 ` Ian Campbell
0 siblings, 0 replies; 9+ messages in thread
From: Ian Campbell @ 2012-03-19 11:23 UTC (permalink / raw)
To: David Vrabel; +Cc: xen-devel@lists.xensource.com, Keir (Xen.org)
On Mon, 2012-03-19 at 11:18 +0000, David Vrabel wrote:
> On 15/03/12 09:34, Ian Campbell wrote:
> > On Wed, 2012-03-14 at 17:27 +0000, David Vrabel wrote:
> >> From: David Vrabel <david.vrabel@citrix.com>
> >>
> >> Based on a version originally posted in 2007.
> >> http://lists.xen.org/archives/html/xen-devel/2007-06/msg00070.html
> >>
> >> Signed-off-by: David Vrabel <david.vrabel@citrix.com>
> >> ---
> >> docs/misc/coding_style.txt | 100 ++++++++++++++++++++++++++++++++++++++++++++
> >
> > Thanks for this!
> >
> > I think this should be CODING_STYLE at the top level (in the vein of
> > top-level COPYRIGHT + local overrides).
>
> The way I think most people will discover this will be via the
> submitting patch page on the wiki. If this doc is in the top-level can
> it be linked from the wiki?
I think so, using README as an example:
http://xenbits.xen.org/hg/xen-unstable.hg/file/tip/README
or
http://xenbits.xen.org/hg/xen-unstable.hg/raw-file/tip/README
It doesn't actually need to be top level for this to work (e.g.
http://xenbits.xen.org/hg/xen-unstable.hg/raw-file/tip/tools/libxl/CODING_STYLE ), but I think top level is the right place for the new document.
I'd also have no objection to a patch to docs/Makefile such that these
files were propagated into xenbits/xen.org/docs/xen-unstable etc.
Ian.
>
> > [snip useful intro text]
>
> I've incorporated this, thanks.
>
> David
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2012-03-19 11:23 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-03-14 17:27 [PATCH] Document the current coding style conventions David Vrabel
2012-03-15 9:11 ` Jan Beulich
2012-03-15 9:34 ` Ian Campbell
2012-03-15 10:54 ` David Vrabel
2012-03-15 11:07 ` Ian Campbell
2012-03-19 11:18 ` David Vrabel
2012-03-19 11:23 ` Ian Campbell
2012-03-15 18:23 ` Dario Faggioli
2012-03-16 9:23 ` Jan Beulich
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).