]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/mini-os.git/commitdiff
mini-os: add BUILD_BUG_ON()
authorJan Beulich <jbeulich@suse.com>
Thu, 3 Jul 2014 14:37:22 +0000 (16:37 +0200)
committerJan Beulich <jbeulich@suse.com>
Thu, 3 Jul 2014 14:37:22 +0000 (16:37 +0200)
Just copy over what the hypervisor currently uses (comments dropped due
to being of unknown origin; the implementation was done by me anyway).

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
Acked-by: Tim Deegan <tim@xen.org>
include/lib.h

index 670c14fb2458f2064ad5c0f93b89c16ef058cb1a..62836c7fed77c219b4727bee86e893ba45f4bb81 100644 (file)
 #include <xen/event_channel.h>
 #include "gntmap.h"
 
+#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)
+#define BUILD_BUG_ON(cond) ({ _Static_assert(!(cond), "!(" #cond ")"); })
+#define BUILD_BUG_ON_ZERO(cond) \
+    sizeof(struct { _Static_assert(!(cond), "!(" #cond ")"); })
+#else
+#define BUILD_BUG_ON_ZERO(cond) sizeof(struct { int:-!!(cond); })
+#define BUILD_BUG_ON(cond) ((void)BUILD_BUG_ON_ZERO(cond))
+#endif
+
 #ifdef HAVE_LIBC
 #include <sys/queue.h>
 #include <stdio.h>