Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S964956Ab2J3RRz (ORCPT ); Tue, 30 Oct 2012 13:17:55 -0400 Received: from mail.skyhub.de ([78.46.96.112]:49320 "EHLO mail.skyhub.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S964823Ab2J3RRv (ORCPT ); Tue, 30 Oct 2012 13:17:51 -0400 Date: Tue, 30 Oct 2012 18:17:47 +0100 From: Borislav Petkov To: Daniel Santos Cc: LKML , Andi Kleen , Andrea Arcangeli , Andrew Morton , Christopher Li , Daniel Santos , David Daney , David Howells , Joe Perches , Josh Triplett , Konstantin Khlebnikov , linux-sparse@vger.kernel.org, Michel Lespinasse , Paul Gortmaker , Pavel Pisa , Peter Zijlstra , Steven Rostedt , David Rientjes Subject: Re: [PATCH v4 8/9] bug.h: Add BUILD_BUG_ON_MSG & _BUILD_BUG_INTERNAL Message-ID: <20121030171747.GF28499@liondog.tnic> Mail-Followup-To: Borislav Petkov , Daniel Santos , LKML , Andi Kleen , Andrea Arcangeli , Andrew Morton , Christopher Li , David Daney , David Howells , Joe Perches , Josh Triplett , Konstantin Khlebnikov , linux-sparse@vger.kernel.org, Michel Lespinasse , Paul Gortmaker , Pavel Pisa , Peter Zijlstra , Steven Rostedt , David Rientjes References: <1351457648-7453-1-git-send-email-daniel.santos@pobox.com> <1351457835-7553-8-git-send-email-daniel.santos@pobox.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <1351457835-7553-8-git-send-email-daniel.santos@pobox.com> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1985 Lines: 57 On Sun, Oct 28, 2012 at 03:57:14PM -0500, danielfsantos@att.net wrote: > Add BUILD_BUG_ON_MSG which behaves like BUILD_BUG_ON (with optimizations > enabled), except that it allows you to specify the error message you > want emitted as the third parameter. Under the hood, this relies on > _BUILD_BUG_INTERNAL, which does the actual work and is pretty-much > identical to BUILD_BUG_ON. > > Signed-off-by: Daniel Santos > --- > include/linux/bug.h | 22 ++++++++++++++++++++++ > 1 files changed, 22 insertions(+), 0 deletions(-) > > diff --git a/include/linux/bug.h b/include/linux/bug.h > index 6c38988..3bc1ddf 100644 > --- a/include/linux/bug.h > +++ b/include/linux/bug.h > @@ -16,6 +16,7 @@ struct pt_regs; > #define BUILD_BUG_ON_NOT_POWER_OF_2(n) > #define BUILD_BUG_ON_ZERO(e) (0) > #define BUILD_BUG_ON_NULL(e) ((void*)0) > +#define BUILD_BUG_ON_MSG(cond, msg) (0) > #define BUILD_BUG_ON(condition) (0) > #define BUILD_BUG() (0) > #else /* __CHECKER__ */ > @@ -38,6 +39,27 @@ struct pt_regs; > */ > #define BUILD_BUG_ON_INVALID(e) ((void)(sizeof((__force long)(e)))) > > +#define __BUILD_BUG_INTERNAL(condition, msg, line) \ > + do { \ > + extern void __build_bug_on_failed_ ## line \ > + (void) __compiletime_error(msg); \ > + __compiletime_error_fallback(condition); \ > + if (condition) \ > + __build_bug_on_failed_ ## line(); \ > + } while (0) > + > +#define _BUILD_BUG_INTERNAL(condition, msg, line) \ > + __BUILD_BUG_INTERNAL(condition, msg, line) Stupid question: can BUILD_BUG_ON and BUILD_BUG_ON_MSG both use __BUILD_BUG_INTERNAL? In the BUILD_BUG_ON msg will be "BUILD_BUG_ON failed" and line empty. Can that even work? Thanks. -- Regards/Gruss, Boris. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/