xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] libs/gnttab: introduce BUILD_BUG_ON
@ 2016-07-13  9:25 Wei Liu
  2016-07-13 11:32 ` Paulina Szubarczyk
  0 siblings, 1 reply; 5+ messages in thread
From: Wei Liu @ 2016-07-13  9:25 UTC (permalink / raw)
  To: Xen-devel; +Cc: Ian Jackson, Wei Liu, Paulina Szubarczyk

The implementation is taken from libxc.

Signed-off-by: Wei Liu <wei.liu2@citrix.com>
---
Cc: Ian Jackson <ian.jackson@eu.citrix.com>
Cc: Paulina Szubarczyk <paulinaszubarczyk@gmail.com>

I could have put it in a header file accessible to all libraries under
libs but this construct is only relevant to xengnttab library at the
moment so it's put under gnttab/private.h. It can be easily moved to
a common place when other libraries under libs require it.

This patch is necessary to unblock Paulina on her gnttab copy work.
---
 tools/libs/gnttab/private.h | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/tools/libs/gnttab/private.h b/tools/libs/gnttab/private.h
index d286c86..da487f2 100644
--- a/tools/libs/gnttab/private.h
+++ b/tools/libs/gnttab/private.h
@@ -4,6 +4,13 @@
 #include <xentoollog.h>
 #include <xengnttab.h>
 
+/* Force a compilation error if condition is true */
+#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)
+#define BUILD_BUG_ON(p) ({ _Static_assert(!(p), "!(" #p ")"); })
+#else
+#define BUILD_BUG_ON(p) ((void)sizeof(struct { int:-!!(p); }))
+#endif
+
 struct xengntdev_handle {
     xentoollog_logger *logger, *logger_tofree;
     int fd;
-- 
2.1.4


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH] libs/gnttab: introduce BUILD_BUG_ON
  2016-07-13  9:25 [PATCH] libs/gnttab: introduce BUILD_BUG_ON Wei Liu
@ 2016-07-13 11:32 ` Paulina Szubarczyk
  2016-07-13 12:07   ` Wei Liu
  0 siblings, 1 reply; 5+ messages in thread
From: Paulina Szubarczyk @ 2016-07-13 11:32 UTC (permalink / raw)
  To: Wei Liu, Xen-devel; +Cc: Ian Jackson



On 07/13/2016 11:25 AM, Wei Liu wrote:
> The implementation is taken from libxc.
>
> Signed-off-by: Wei Liu <wei.liu2@citrix.com>
> ---
> Cc: Ian Jackson <ian.jackson@eu.citrix.com>
> Cc: Paulina Szubarczyk <paulinaszubarczyk@gmail.com>
>
> I could have put it in a header file accessible to all libraries under
> libs but this construct is only relevant to xengnttab library at the
> moment so it's put under gnttab/private.h. It can be easily moved to
> a common place when other libraries under libs require it.
>
> This patch is necessary to unblock Paulina on her gnttab copy work.
> ---
>   tools/libs/gnttab/private.h | 7 +++++++
>   1 file changed, 7 insertions(+)
>
> diff --git a/tools/libs/gnttab/private.h b/tools/libs/gnttab/private.h
> index d286c86..da487f2 100644
> --- a/tools/libs/gnttab/private.h
> +++ b/tools/libs/gnttab/private.h
> @@ -4,6 +4,13 @@
>   #include <xentoollog.h>
>   #include <xengnttab.h>
>
> +/* Force a compilation error if condition is true */
> +#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)
> +#define BUILD_BUG_ON(p) ({ _Static_assert(!(p), "!(" #p ")"); })
> +#else
> +#define BUILD_BUG_ON(p) ((void)sizeof(struct { int:-!!(p); }))
> +#endif
> +
>   struct xengntdev_handle {
>       xentoollog_logger *logger, *logger_tofree;
>       int fd;
>
Hi Wei,

thank you for the help with the grant copy patch. I have just rebuild 
Xen and there is a conflict with definition of BUILD_BUG_ON for mini-os 
build:

In file included from minios.c:33:0:
private.h:9:0: error: "BUILD_BUG_ON" redefined [-Werror]
  #define BUILD_BUG_ON(p) ({ _Static_assert(!(p), "!(" #p ")"); })
  ^
In file included from minios.c:25:0:
xen/extras/mini-os-remote/include/lib.h:58:0: note: this is the location 
of the previous definition
  #define BUILD_BUG_ON(cond) ({ _Static_assert(!(cond), "!(" #cond ")"); })
  ^
I thought about wrapping the code in #ifndef BUILD_BUG_ON #endif.

Paulina

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] libs/gnttab: introduce BUILD_BUG_ON
  2016-07-13 11:32 ` Paulina Szubarczyk
@ 2016-07-13 12:07   ` Wei Liu
  2016-07-13 12:16     ` Andrew Cooper
  0 siblings, 1 reply; 5+ messages in thread
From: Wei Liu @ 2016-07-13 12:07 UTC (permalink / raw)
  To: Paulina Szubarczyk; +Cc: Xen-devel, Wei Liu, Ian Jackson

On Wed, Jul 13, 2016 at 01:32:10PM +0200, Paulina Szubarczyk wrote:
> 
> 
> On 07/13/2016 11:25 AM, Wei Liu wrote:
> >The implementation is taken from libxc.
> >
> >Signed-off-by: Wei Liu <wei.liu2@citrix.com>
> >---
> >Cc: Ian Jackson <ian.jackson@eu.citrix.com>
> >Cc: Paulina Szubarczyk <paulinaszubarczyk@gmail.com>
> >
> >I could have put it in a header file accessible to all libraries under
> >libs but this construct is only relevant to xengnttab library at the
> >moment so it's put under gnttab/private.h. It can be easily moved to
> >a common place when other libraries under libs require it.
> >
> >This patch is necessary to unblock Paulina on her gnttab copy work.
> >---
> >  tools/libs/gnttab/private.h | 7 +++++++
> >  1 file changed, 7 insertions(+)
> >
> >diff --git a/tools/libs/gnttab/private.h b/tools/libs/gnttab/private.h
> >index d286c86..da487f2 100644
> >--- a/tools/libs/gnttab/private.h
> >+++ b/tools/libs/gnttab/private.h
> >@@ -4,6 +4,13 @@
> >  #include <xentoollog.h>
> >  #include <xengnttab.h>
> >
> >+/* Force a compilation error if condition is true */
> >+#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)
> >+#define BUILD_BUG_ON(p) ({ _Static_assert(!(p), "!(" #p ")"); })
> >+#else
> >+#define BUILD_BUG_ON(p) ((void)sizeof(struct { int:-!!(p); }))
> >+#endif
> >+
> >  struct xengntdev_handle {
> >      xentoollog_logger *logger, *logger_tofree;
> >      int fd;
> >
> Hi Wei,
> 
> thank you for the help with the grant copy patch. I have just rebuild Xen
> and there is a conflict with definition of BUILD_BUG_ON for mini-os build:
> 
> In file included from minios.c:33:0:
> private.h:9:0: error: "BUILD_BUG_ON" redefined [-Werror]
>  #define BUILD_BUG_ON(p) ({ _Static_assert(!(p), "!(" #p ")"); })
>  ^
> In file included from minios.c:25:0:
> xen/extras/mini-os-remote/include/lib.h:58:0: note: this is the location of
> the previous definition
>  #define BUILD_BUG_ON(cond) ({ _Static_assert(!(cond), "!(" #cond ")"); })
>  ^
> I thought about wrapping the code in #ifndef BUILD_BUG_ON #endif.

We could use a prefix to the one used in gnttab.

Maybe call it XENGNTTAB_BUILD_BUG_ON for now?

All these are just cosmetic. You can modify my patch to use the name
above and continue your work. When we finally decide what it should be
called you can easily modify your code to adapt.

Wei.

> 
> Paulina

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] libs/gnttab: introduce BUILD_BUG_ON
  2016-07-13 12:07   ` Wei Liu
@ 2016-07-13 12:16     ` Andrew Cooper
  2016-07-13 12:21       ` Wei Liu
  0 siblings, 1 reply; 5+ messages in thread
From: Andrew Cooper @ 2016-07-13 12:16 UTC (permalink / raw)
  To: Wei Liu, Paulina Szubarczyk; +Cc: Xen-devel, Ian Jackson

On 13/07/16 13:07, Wei Liu wrote:
> On Wed, Jul 13, 2016 at 01:32:10PM +0200, Paulina Szubarczyk wrote:
>>
>> On 07/13/2016 11:25 AM, Wei Liu wrote:
>>> The implementation is taken from libxc.
>>>
>>> Signed-off-by: Wei Liu <wei.liu2@citrix.com>
>>> ---
>>> Cc: Ian Jackson <ian.jackson@eu.citrix.com>
>>> Cc: Paulina Szubarczyk <paulinaszubarczyk@gmail.com>
>>>
>>> I could have put it in a header file accessible to all libraries under
>>> libs but this construct is only relevant to xengnttab library at the
>>> moment so it's put under gnttab/private.h. It can be easily moved to
>>> a common place when other libraries under libs require it.
>>>
>>> This patch is necessary to unblock Paulina on her gnttab copy work.
>>> ---
>>>  tools/libs/gnttab/private.h | 7 +++++++
>>>  1 file changed, 7 insertions(+)
>>>
>>> diff --git a/tools/libs/gnttab/private.h b/tools/libs/gnttab/private.h
>>> index d286c86..da487f2 100644
>>> --- a/tools/libs/gnttab/private.h
>>> +++ b/tools/libs/gnttab/private.h
>>> @@ -4,6 +4,13 @@
>>>  #include <xentoollog.h>
>>>  #include <xengnttab.h>
>>>
>>> +/* Force a compilation error if condition is true */
>>> +#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)
>>> +#define BUILD_BUG_ON(p) ({ _Static_assert(!(p), "!(" #p ")"); })
>>> +#else
>>> +#define BUILD_BUG_ON(p) ((void)sizeof(struct { int:-!!(p); }))
>>> +#endif
>>> +
>>>  struct xengntdev_handle {
>>>      xentoollog_logger *logger, *logger_tofree;
>>>      int fd;
>>>
>> Hi Wei,
>>
>> thank you for the help with the grant copy patch. I have just rebuild Xen
>> and there is a conflict with definition of BUILD_BUG_ON for mini-os build:
>>
>> In file included from minios.c:33:0:
>> private.h:9:0: error: "BUILD_BUG_ON" redefined [-Werror]
>>  #define BUILD_BUG_ON(p) ({ _Static_assert(!(p), "!(" #p ")"); })
>>  ^
>> In file included from minios.c:25:0:
>> xen/extras/mini-os-remote/include/lib.h:58:0: note: this is the location of
>> the previous definition
>>  #define BUILD_BUG_ON(cond) ({ _Static_assert(!(cond), "!(" #cond ")"); })
>>  ^
>> I thought about wrapping the code in #ifndef BUILD_BUG_ON #endif.
> We could use a prefix to the one used in gnttab.
>
> Maybe call it XENGNTTAB_BUILD_BUG_ON for now?

The contents of gnttabs private.h is entirely up to gnttab.

It is MiniOS (who is poking about in someone elses private.h) with the
responsibility not to have a broken build.  It needs to do this by not
leaking so much stuff into its global namespace.

~Andrew

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] libs/gnttab: introduce BUILD_BUG_ON
  2016-07-13 12:16     ` Andrew Cooper
@ 2016-07-13 12:21       ` Wei Liu
  0 siblings, 0 replies; 5+ messages in thread
From: Wei Liu @ 2016-07-13 12:21 UTC (permalink / raw)
  To: Andrew Cooper; +Cc: Paulina Szubarczyk, Wei Liu, Ian Jackson, Xen-devel

On Wed, Jul 13, 2016 at 01:16:51PM +0100, Andrew Cooper wrote:
> On 13/07/16 13:07, Wei Liu wrote:
> > On Wed, Jul 13, 2016 at 01:32:10PM +0200, Paulina Szubarczyk wrote:
> >>
> >> On 07/13/2016 11:25 AM, Wei Liu wrote:
> >>> The implementation is taken from libxc.
> >>>
> >>> Signed-off-by: Wei Liu <wei.liu2@citrix.com>
> >>> ---
> >>> Cc: Ian Jackson <ian.jackson@eu.citrix.com>
> >>> Cc: Paulina Szubarczyk <paulinaszubarczyk@gmail.com>
> >>>
> >>> I could have put it in a header file accessible to all libraries under
> >>> libs but this construct is only relevant to xengnttab library at the
> >>> moment so it's put under gnttab/private.h. It can be easily moved to
> >>> a common place when other libraries under libs require it.
> >>>
> >>> This patch is necessary to unblock Paulina on her gnttab copy work.
> >>> ---
> >>>  tools/libs/gnttab/private.h | 7 +++++++
> >>>  1 file changed, 7 insertions(+)
> >>>
> >>> diff --git a/tools/libs/gnttab/private.h b/tools/libs/gnttab/private.h
> >>> index d286c86..da487f2 100644
> >>> --- a/tools/libs/gnttab/private.h
> >>> +++ b/tools/libs/gnttab/private.h
> >>> @@ -4,6 +4,13 @@
> >>>  #include <xentoollog.h>
> >>>  #include <xengnttab.h>
> >>>
> >>> +/* Force a compilation error if condition is true */
> >>> +#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)
> >>> +#define BUILD_BUG_ON(p) ({ _Static_assert(!(p), "!(" #p ")"); })
> >>> +#else
> >>> +#define BUILD_BUG_ON(p) ((void)sizeof(struct { int:-!!(p); }))
> >>> +#endif
> >>> +
> >>>  struct xengntdev_handle {
> >>>      xentoollog_logger *logger, *logger_tofree;
> >>>      int fd;
> >>>
> >> Hi Wei,
> >>
> >> thank you for the help with the grant copy patch. I have just rebuild Xen
> >> and there is a conflict with definition of BUILD_BUG_ON for mini-os build:
> >>
> >> In file included from minios.c:33:0:
> >> private.h:9:0: error: "BUILD_BUG_ON" redefined [-Werror]
> >>  #define BUILD_BUG_ON(p) ({ _Static_assert(!(p), "!(" #p ")"); })
> >>  ^
> >> In file included from minios.c:25:0:
> >> xen/extras/mini-os-remote/include/lib.h:58:0: note: this is the location of
> >> the previous definition
> >>  #define BUILD_BUG_ON(cond) ({ _Static_assert(!(cond), "!(" #cond ")"); })
> >>  ^
> >> I thought about wrapping the code in #ifndef BUILD_BUG_ON #endif.
> > We could use a prefix to the one used in gnttab.
> >
> > Maybe call it XENGNTTAB_BUILD_BUG_ON for now?
> 
> The contents of gnttabs private.h is entirely up to gnttab.
> 
> It is MiniOS (who is poking about in someone elses private.h) with the
> responsibility not to have a broken build.  It needs to do this by not
> leaking so much stuff into its global namespace.
> 

Yeah, I know. It wouldn't hurt to prefix the name anyway.

The mini-os build system problem can be solve separately.

Wei.

> ~Andrew

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2016-07-13 12:21 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-07-13  9:25 [PATCH] libs/gnttab: introduce BUILD_BUG_ON Wei Liu
2016-07-13 11:32 ` Paulina Szubarczyk
2016-07-13 12:07   ` Wei Liu
2016-07-13 12:16     ` Andrew Cooper
2016-07-13 12:21       ` Wei Liu

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