Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751689AbbKPIfL (ORCPT ); Mon, 16 Nov 2015 03:35:11 -0500 Received: from us01smtprelay-2.synopsys.com ([198.182.47.9]:37214 "EHLO smtprelay.synopsys.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751102AbbKPIfI convert rfc822-to-8bit (ORCPT ); Mon, 16 Nov 2015 03:35:08 -0500 From: Vineet Gupta To: Geert Uytterhoeven CC: Rasmus Villemoes , Paul Gortmaker , Ingo Molnar , Andrew Morton , Thomas Gleixner , "H. Peter Anvin" , Michal Marek , "linux-arch@vger.kernel.org" , "linux-kernel@vger.kernel.org" , arcml Subject: Re: using IS_ENABLED(CONFIG_xyz) effectively Thread-Topic: using IS_ENABLED(CONFIG_xyz) effectively Thread-Index: AQHRIEi8y18Ge9GsEkyu+1JIQ2xGjw== Date: Mon, 16 Nov 2015 08:35:05 +0000 Message-ID: References: <5613F3DE.4010406@suse.cz> <1444165543-2209-1-git-send-email-linux@rasmusvillemoes.dk> <56498D0A.3070000@synopsys.com> Accept-Language: en-US, en-IN Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.12.197.182] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 8BIT MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1782 Lines: 50 Hi Geert, On Monday 16 November 2015 01:58 PM, Geert Uytterhoeven wrote: > Hi Vineet, > > On Mon, Nov 16, 2015 at 9:00 AM, Vineet Gupta > wrote: >> I've been using IS_ENABLED for some time and once in a while run into an issue >> which prevents seamless use. Hence posing this question to experts in the area. >> >> C macro processor evaluates the ensuing control block even if IS_ENABLED evaluates >> to false. This requires dummy #defines or worse still removing usage of IS_ENABLED >> altogether. >> >> e.g. In example below even for ARCOMPACT builds, we need the ARCV2 specific define >> ARCV2_IRQ_DEF_PRIO. >> >> void arch_cpu_idle(void) >> { >> if (is_isa_arcompact()) { <---- IS_ENABLED(CONFIG_ISA_ARCOMPACT) >> __asm__("sleep 0x3"); >> } else { >> const int arg = 0x10 | ARCV2_IRQ_DEF_PRIO; >> __asm__("sleep 0x10"); >> } >> } >> >> One could argue that the interface needs to be cleanly defined to not have such >> specific #defines in common code in first place. However sometime that becomes >> just too tedious. >> >> Is there a way to get around by this ? > Use #ifdef CONFIG_...? > > The advantage of IS_ENABLED() over #ifdef is that it allows compile-testing of > the disabled code path. Of course it should only be compiled if it makes > sense. And that's exactly what you're running into. And I thought it was to de-uglify the code with same semantics - which doesn't seem to be the case ! Oh well ! Thx, -Vineet -- 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/