diff mbox

[1/2] Introduce compiler.h header file

Message ID 1310567013-11058-2-git-send-email-lcapitulino@redhat.com
State New
Headers show

Commit Message

Luiz Capitulino July 13, 2011, 2:23 p.m. UTC
From: Luiz Capitulino <lcapitulino@gmail.com>

This moves compiler related macros from qemu-common.h to compiler.h.

The reason for this change is that there are simple header files that
depend only on the compiler macros, so including qemu-common.h is overkill.

Besides, qemu-common.h is bloated and will benefit from some splitting.

Signed-off-by: Luiz Capitulino <lcapitulino@gmail.com>
---
 compiler.h    |   31 +++++++++++++++++++++++++++++++
 qemu-common.h |   25 +------------------------
 2 files changed, 32 insertions(+), 24 deletions(-)
 create mode 100644 compiler.h

Comments

malc July 13, 2011, 2:37 p.m. UTC | #1
On Wed, 13 Jul 2011, Luiz Capitulino wrote:

> From: Luiz Capitulino <lcapitulino@gmail.com>
> 
> This moves compiler related macros from qemu-common.h to compiler.h.
> 
> The reason for this change is that there are simple header files that
> depend only on the compiler macros, so including qemu-common.h is overkill.
> 
> Besides, qemu-common.h is bloated and will benefit from some splitting.
> 
> Signed-off-by: Luiz Capitulino <lcapitulino@gmail.com>
> ---
>  compiler.h    |   31 +++++++++++++++++++++++++++++++
>  qemu-common.h |   25 +------------------------
>  2 files changed, 32 insertions(+), 24 deletions(-)
>  create mode 100644 compiler.h
> 
> diff --git a/compiler.h b/compiler.h
> new file mode 100644
> index 0000000..2dfc2c6
> --- /dev/null
> +++ b/compiler.h
> @@ -0,0 +1,31 @@
> +#ifndef COMPILER_H
> +#define COMPILER_H
> +
> +#include "config-host.h"
> +
> +#define QEMU_NORETURN __attribute__ ((__noreturn__))
> +#ifdef CONFIG_GCC_ATTRIBUTE_WARN_UNUSED_RESULT
> +#define QEMU_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
> +#else
> +#define QEMU_WARN_UNUSED_RESULT
> +#endif
> +
> +#define QEMU_BUILD_BUG_ON(x) typedef char __build_bug_on__##__LINE__[(x)?-1:1];

Identifiers starting with double underscore are reserved for all uses,
so, please, use something else.

> +
> +#if defined __GNUC__
> +# if (__GNUC__ < 4) || \
> +     defined(__GNUC_MINOR__) && (__GNUC__ == 4) && (__GNUC_MINOR__ < 4)
> +   /* gcc versions before 4.4.x don't support gnu_printf, so use printf. */
> +#  define GCC_ATTR __attribute__((__unused__, format(printf, 1, 2)))
> +#  define GCC_FMT_ATTR(n, m) __attribute__((format(printf, n, m)))
> +# else
> +   /* Use gnu_printf when supported (qemu uses standard format strings). */
> +#  define GCC_ATTR __attribute__((__unused__, format(gnu_printf, 1, 2)))
> +#  define GCC_FMT_ATTR(n, m) __attribute__((format(gnu_printf, n, m)))
> +# endif
> +#else
> +#define GCC_ATTR /**/
> +#define GCC_FMT_ATTR(n, m)
> +#endif
> +
> +#endif /* COMPILER_H */
> diff --git a/qemu-common.h b/qemu-common.h
> index abd7a75..1e72931 100644
> --- a/qemu-common.h
> +++ b/qemu-common.h
> @@ -2,16 +2,9 @@
>  #ifndef QEMU_COMMON_H
>  #define QEMU_COMMON_H
>  
> +#include "compiler.h"
>  #include "config-host.h"
>  
> -#define QEMU_NORETURN __attribute__ ((__noreturn__))
> -#ifdef CONFIG_GCC_ATTRIBUTE_WARN_UNUSED_RESULT
> -#define QEMU_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
> -#else
> -#define QEMU_WARN_UNUSED_RESULT
> -#endif
> -
> -#define QEMU_BUILD_BUG_ON(x) typedef char __build_bug_on__##__LINE__[(x)?-1:1];
>  #define TFR(expr) do { if ((expr) != -1) break; } while (errno == EINTR)
>  
>  typedef struct QEMUTimer QEMUTimer;
> @@ -82,22 +75,6 @@ struct iovec {
>  #include <sys/uio.h>
>  #endif
>  
> -#if defined __GNUC__
> -# if (__GNUC__ < 4) || \
> -     defined(__GNUC_MINOR__) && (__GNUC__ == 4) && (__GNUC_MINOR__ < 4)
> -   /* gcc versions before 4.4.x don't support gnu_printf, so use printf. */
> -#  define GCC_ATTR __attribute__((__unused__, format(printf, 1, 2)))
> -#  define GCC_FMT_ATTR(n, m) __attribute__((format(printf, n, m)))
> -# else
> -   /* Use gnu_printf when supported (qemu uses standard format strings). */
> -#  define GCC_ATTR __attribute__((__unused__, format(gnu_printf, 1, 2)))
> -#  define GCC_FMT_ATTR(n, m) __attribute__((format(gnu_printf, n, m)))
> -# endif
> -#else
> -#define GCC_ATTR /**/
> -#define GCC_FMT_ATTR(n, m)
> -#endif
> -
>  typedef int (*fprintf_function)(FILE *f, const char *fmt, ...)
>      GCC_FMT_ATTR(2, 3);
>  
>
Peter Maydell July 13, 2011, 3:04 p.m. UTC | #2
On 13 July 2011 15:23, Luiz Capitulino <lcapitulino@redhat.com> wrote:
> diff --git a/compiler.h b/compiler.h
> new file mode 100644
> index 0000000..2dfc2c6
> --- /dev/null
> +++ b/compiler.h
> @@ -0,0 +1,31 @@
> +#ifndef COMPILER_H
> +#define COMPILER_H

If we don't have a rule that says that all new source files should have
a standard-ish format copyright notice and license statement, I think
we ought to.

(This came up last in the discussion over importing Linux kernel
headers into the qemu tree. Having every file's status be clear and
clearly stated makes life easier for people who have to check these
things before redistributing...)

-- PMM
Luiz Capitulino July 13, 2011, 4:27 p.m. UTC | #3
On Wed, 13 Jul 2011 16:04:52 +0100
Peter Maydell <peter.maydell@linaro.org> wrote:

> On 13 July 2011 15:23, Luiz Capitulino <lcapitulino@redhat.com> wrote:
> > diff --git a/compiler.h b/compiler.h
> > new file mode 100644
> > index 0000000..2dfc2c6
> > --- /dev/null
> > +++ b/compiler.h
> > @@ -0,0 +1,31 @@
> > +#ifndef COMPILER_H
> > +#define COMPILER_H
> 
> If we don't have a rule that says that all new source files should have
> a standard-ish format copyright notice and license statement, I think
> we ought to.

Make sense, but this content comes from qemu-common.h which doesn't
have that information. I can't choose for the authors. Malc is one of them,
and he asked me to remove the license text altogether (which makes this public
domain?)

> 
> (This came up last in the discussion over importing Linux kernel
> headers into the qemu tree. Having every file's status be clear and
> clearly stated makes life easier for people who have to check these
> things before redistributing...)
> 
> -- PMM
>
malc July 13, 2011, 4:47 p.m. UTC | #4
On Wed, 13 Jul 2011, Luiz Capitulino wrote:

> On Wed, 13 Jul 2011 18:37:31 +0400 (MSD)
> malc <av1474@comtv.ru> wrote:
> 
> > On Wed, 13 Jul 2011, Luiz Capitulino wrote:
> > 
> > > From: Luiz Capitulino <lcapitulino@gmail.com>
> > > 
> > > This moves compiler related macros from qemu-common.h to compiler.h.
> > > 
> > > The reason for this change is that there are simple header files that
> > > depend only on the compiler macros, so including qemu-common.h is overkill.
> > > 
> > > Besides, qemu-common.h is bloated and will benefit from some splitting.
> > > 
> > > Signed-off-by: Luiz Capitulino <lcapitulino@gmail.com>
> > > ---
> > >  compiler.h    |   31 +++++++++++++++++++++++++++++++
> > >  qemu-common.h |   25 +------------------------
> > >  2 files changed, 32 insertions(+), 24 deletions(-)
> > >  create mode 100644 compiler.h
> > > 
> > > diff --git a/compiler.h b/compiler.h
> > > new file mode 100644
> > > index 0000000..2dfc2c6
> > > --- /dev/null
> > > +++ b/compiler.h
> > > @@ -0,0 +1,31 @@
> > > +#ifndef COMPILER_H
> > > +#define COMPILER_H
> > > +
> > > +#include "config-host.h"
> > > +
> > > +#define QEMU_NORETURN __attribute__ ((__noreturn__))
> > > +#ifdef CONFIG_GCC_ATTRIBUTE_WARN_UNUSED_RESULT
> > > +#define QEMU_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
> > > +#else
> > > +#define QEMU_WARN_UNUSED_RESULT
> > > +#endif
> > > +
> > > +#define QEMU_BUILD_BUG_ON(x) typedef char __build_bug_on__##__LINE__[(x)?-1:1];
> > 
> > Identifiers starting with double underscore are reserved for all uses,
> > so, please, use something else.
> 
> I'll fix it as an additional patch:

OK.

> 
> diff --git a/compiler.h b/compiler.h
> index 2dfc2c6..54720bf 100644
> --- a/compiler.h
> +++ b/compiler.h
> @@ -10,7 +10,8 @@
>  #define QEMU_WARN_UNUSED_RESULT
>  #endif
>  
> -#define QEMU_BUILD_BUG_ON(x) typedef char __build_bug_on__##__LINE__[(x)?-1:1];
> +#define QEMU_BUILD_BUG_ON(x) \
> +    typedef char qemu_build_bug_on__##__LINE__[(x)?-1:1];
>  
>  #if defined __GNUC__
>  # if (__GNUC__ < 4) || \
>
Stefan Weil July 13, 2011, 8:39 p.m. UTC | #5
Am 13.07.2011 18:27, schrieb Luiz Capitulino:
> On Wed, 13 Jul 2011 16:04:52 +0100
> Peter Maydell <peter.maydell@linaro.org> wrote:
>
>> On 13 July 2011 15:23, Luiz Capitulino <lcapitulino@redhat.com> wrote:
>>> diff --git a/compiler.h b/compiler.h
>>> new file mode 100644
>>> index 0000000..2dfc2c6
>>> --- /dev/null
>>> +++ b/compiler.h
>>> @@ -0,0 +1,31 @@
>>> +#ifndef COMPILER_H
>>> +#define COMPILER_H
>>
>> If we don't have a rule that says that all new source files should have
>> a standard-ish format copyright notice and license statement, I think
>> we ought to.
>
> Make sense, but this content comes from qemu-common.h which doesn't
> have that information. I can't choose for the authors. Malc is one of 
> them,
> and he asked me to remove the license text altogether (which makes 
> this public
> domain?)

Malc's code was from audio/audio_int.h, so maybe the license text
can be copied from that file.

I thought that no individual license text implied the default license
which is described in file LICENSE:

"QEMU as a whole is released under the GNU General Public License"

Regards,
Stefan
Peter Maydell July 14, 2011, 10:58 a.m. UTC | #6
On 13 July 2011 17:27, Luiz Capitulino <lcapitulino@redhat.com> wrote:
> he asked me to remove the license text altogether (which makes this
> public domain?)

Saying nothing is definitely not putting something into the public
domain, it's just leaving the recipient to guess (and for safety you
generally have to assume the worst, ie not distributable.)
In particular at least two people in this thread have assumed it means
two definitely different things. We should just state clearly what
licence we are providing the file under, and not leave people in doubt.
[If we ourselves are in doubt we shouldn't ship it at all :-)]

-- PMM
Luiz Capitulino July 14, 2011, 12:57 p.m. UTC | #7
On Wed, 13 Jul 2011 22:39:07 +0200
Stefan Weil <weil@mail.berlios.de> wrote:

> Am 13.07.2011 18:27, schrieb Luiz Capitulino:
> > On Wed, 13 Jul 2011 16:04:52 +0100
> > Peter Maydell <peter.maydell@linaro.org> wrote:
> >
> >> On 13 July 2011 15:23, Luiz Capitulino <lcapitulino@redhat.com> wrote:
> >>> diff --git a/compiler.h b/compiler.h
> >>> new file mode 100644
> >>> index 0000000..2dfc2c6
> >>> --- /dev/null
> >>> +++ b/compiler.h
> >>> @@ -0,0 +1,31 @@
> >>> +#ifndef COMPILER_H
> >>> +#define COMPILER_H
> >>
> >> If we don't have a rule that says that all new source files should have
> >> a standard-ish format copyright notice and license statement, I think
> >> we ought to.
> >
> > Make sense, but this content comes from qemu-common.h which doesn't
> > have that information. I can't choose for the authors. Malc is one of 
> > them,
> > and he asked me to remove the license text altogether (which makes 
> > this public
> > domain?)
> 
> Malc's code was from audio/audio_int.h, so maybe the license text
> can be copied from that file.

Malc, are you ok with that?
malc July 14, 2011, 2:15 p.m. UTC | #8
On Thu, 14 Jul 2011, Luiz Capitulino wrote:

> On Wed, 13 Jul 2011 22:39:07 +0200
> Stefan Weil <weil@mail.berlios.de> wrote:
> 
> > Am 13.07.2011 18:27, schrieb Luiz Capitulino:
> > > On Wed, 13 Jul 2011 16:04:52 +0100
> > > Peter Maydell <peter.maydell@linaro.org> wrote:
> > >
> > >> On 13 July 2011 15:23, Luiz Capitulino <lcapitulino@redhat.com> wrote:
> > >>> diff --git a/compiler.h b/compiler.h
> > >>> new file mode 100644
> > >>> index 0000000..2dfc2c6
> > >>> --- /dev/null
> > >>> +++ b/compiler.h
> > >>> @@ -0,0 +1,31 @@
> > >>> +#ifndef COMPILER_H
> > >>> +#define COMPILER_H
> > >>
> > >> If we don't have a rule that says that all new source files should have
> > >> a standard-ish format copyright notice and license statement, I think
> > >> we ought to.
> > >
> > > Make sense, but this content comes from qemu-common.h which doesn't
> > > have that information. I can't choose for the authors. Malc is one of 
> > > them,
> > > and he asked me to remove the license text altogether (which makes 
> > > this public
> > > domain?)
> > 
> > Malc's code was from audio/audio_int.h, so maybe the license text
> > can be copied from that file.
> 
> Malc, are you ok with that?
> 

I would be okay with just making it public domain.
Luiz Capitulino July 14, 2011, 2:26 p.m. UTC | #9
On Thu, 14 Jul 2011 18:15:57 +0400 (MSD)
malc <av1474@comtv.ru> wrote:

> On Thu, 14 Jul 2011, Luiz Capitulino wrote:
> 
> > On Wed, 13 Jul 2011 22:39:07 +0200
> > Stefan Weil <weil@mail.berlios.de> wrote:
> > 
> > > Am 13.07.2011 18:27, schrieb Luiz Capitulino:
> > > > On Wed, 13 Jul 2011 16:04:52 +0100
> > > > Peter Maydell <peter.maydell@linaro.org> wrote:
> > > >
> > > >> On 13 July 2011 15:23, Luiz Capitulino <lcapitulino@redhat.com> wrote:
> > > >>> diff --git a/compiler.h b/compiler.h
> > > >>> new file mode 100644
> > > >>> index 0000000..2dfc2c6
> > > >>> --- /dev/null
> > > >>> +++ b/compiler.h
> > > >>> @@ -0,0 +1,31 @@
> > > >>> +#ifndef COMPILER_H
> > > >>> +#define COMPILER_H
> > > >>
> > > >> If we don't have a rule that says that all new source files should have
> > > >> a standard-ish format copyright notice and license statement, I think
> > > >> we ought to.
> > > >
> > > > Make sense, but this content comes from qemu-common.h which doesn't
> > > > have that information. I can't choose for the authors. Malc is one of 
> > > > them,
> > > > and he asked me to remove the license text altogether (which makes 
> > > > this public
> > > > domain?)
> > > 
> > > Malc's code was from audio/audio_int.h, so maybe the license text
> > > can be copied from that file.
> > 
> > Malc, are you ok with that?
> > 
> 
> I would be okay with just making it public domain.

May you suggest a text to be put in the file?
malc July 14, 2011, 2:35 p.m. UTC | #10
On Thu, 14 Jul 2011, Luiz Capitulino wrote:

> On Thu, 14 Jul 2011 18:15:57 +0400 (MSD)
> malc <av1474@comtv.ru> wrote:
> 
> > On Thu, 14 Jul 2011, Luiz Capitulino wrote:
> > 
> > > On Wed, 13 Jul 2011 22:39:07 +0200
> > > Stefan Weil <weil@mail.berlios.de> wrote:
> > > 
> > > > Am 13.07.2011 18:27, schrieb Luiz Capitulino:
> > > > > On Wed, 13 Jul 2011 16:04:52 +0100
> > > > > Peter Maydell <peter.maydell@linaro.org> wrote:
> > > > >
> > > > >> On 13 July 2011 15:23, Luiz Capitulino <lcapitulino@redhat.com> wrote:
> > > > >>> diff --git a/compiler.h b/compiler.h
> > > > >>> new file mode 100644
> > > > >>> index 0000000..2dfc2c6
> > > > >>> --- /dev/null
> > > > >>> +++ b/compiler.h
> > > > >>> @@ -0,0 +1,31 @@
> > > > >>> +#ifndef COMPILER_H
> > > > >>> +#define COMPILER_H
> > > > >>
> > > > >> If we don't have a rule that says that all new source files should have
> > > > >> a standard-ish format copyright notice and license statement, I think
> > > > >> we ought to.
> > > > >
> > > > > Make sense, but this content comes from qemu-common.h which doesn't
> > > > > have that information. I can't choose for the authors. Malc is one of 
> > > > > them,
> > > > > and he asked me to remove the license text altogether (which makes 
> > > > > this public
> > > > > domain?)
> > > > 
> > > > Malc's code was from audio/audio_int.h, so maybe the license text
> > > > can be copied from that file.
> > > 
> > > Malc, are you ok with that?
> > > 
> > 
> > I would be okay with just making it public domain.
> 
> May you suggest a text to be put in the file?
> 

/* public domain */
diff mbox

Patch

diff --git a/compiler.h b/compiler.h
new file mode 100644
index 0000000..2dfc2c6
--- /dev/null
+++ b/compiler.h
@@ -0,0 +1,31 @@ 
+#ifndef COMPILER_H
+#define COMPILER_H
+
+#include "config-host.h"
+
+#define QEMU_NORETURN __attribute__ ((__noreturn__))
+#ifdef CONFIG_GCC_ATTRIBUTE_WARN_UNUSED_RESULT
+#define QEMU_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
+#else
+#define QEMU_WARN_UNUSED_RESULT
+#endif
+
+#define QEMU_BUILD_BUG_ON(x) typedef char __build_bug_on__##__LINE__[(x)?-1:1];
+
+#if defined __GNUC__
+# if (__GNUC__ < 4) || \
+     defined(__GNUC_MINOR__) && (__GNUC__ == 4) && (__GNUC_MINOR__ < 4)
+   /* gcc versions before 4.4.x don't support gnu_printf, so use printf. */
+#  define GCC_ATTR __attribute__((__unused__, format(printf, 1, 2)))
+#  define GCC_FMT_ATTR(n, m) __attribute__((format(printf, n, m)))
+# else
+   /* Use gnu_printf when supported (qemu uses standard format strings). */
+#  define GCC_ATTR __attribute__((__unused__, format(gnu_printf, 1, 2)))
+#  define GCC_FMT_ATTR(n, m) __attribute__((format(gnu_printf, n, m)))
+# endif
+#else
+#define GCC_ATTR /**/
+#define GCC_FMT_ATTR(n, m)
+#endif
+
+#endif /* COMPILER_H */
diff --git a/qemu-common.h b/qemu-common.h
index abd7a75..1e72931 100644
--- a/qemu-common.h
+++ b/qemu-common.h
@@ -2,16 +2,9 @@ 
 #ifndef QEMU_COMMON_H
 #define QEMU_COMMON_H
 
+#include "compiler.h"
 #include "config-host.h"
 
-#define QEMU_NORETURN __attribute__ ((__noreturn__))
-#ifdef CONFIG_GCC_ATTRIBUTE_WARN_UNUSED_RESULT
-#define QEMU_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
-#else
-#define QEMU_WARN_UNUSED_RESULT
-#endif
-
-#define QEMU_BUILD_BUG_ON(x) typedef char __build_bug_on__##__LINE__[(x)?-1:1];
 #define TFR(expr) do { if ((expr) != -1) break; } while (errno == EINTR)
 
 typedef struct QEMUTimer QEMUTimer;
@@ -82,22 +75,6 @@  struct iovec {
 #include <sys/uio.h>
 #endif
 
-#if defined __GNUC__
-# if (__GNUC__ < 4) || \
-     defined(__GNUC_MINOR__) && (__GNUC__ == 4) && (__GNUC_MINOR__ < 4)
-   /* gcc versions before 4.4.x don't support gnu_printf, so use printf. */
-#  define GCC_ATTR __attribute__((__unused__, format(printf, 1, 2)))
-#  define GCC_FMT_ATTR(n, m) __attribute__((format(printf, n, m)))
-# else
-   /* Use gnu_printf when supported (qemu uses standard format strings). */
-#  define GCC_ATTR __attribute__((__unused__, format(gnu_printf, 1, 2)))
-#  define GCC_FMT_ATTR(n, m) __attribute__((format(gnu_printf, n, m)))
-# endif
-#else
-#define GCC_ATTR /**/
-#define GCC_FMT_ATTR(n, m)
-#endif
-
 typedef int (*fprintf_function)(FILE *f, const char *fmt, ...)
     GCC_FMT_ATTR(2, 3);