From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755870AbbB0WSk (ORCPT ); Fri, 27 Feb 2015 17:18:40 -0500 Received: from mail.linuxfoundation.org ([140.211.169.12]:48096 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754853AbbB0WSi (ORCPT ); Fri, 27 Feb 2015 17:18:38 -0500 Date: Fri, 27 Feb 2015 14:18:37 -0800 From: Andrew Morton To: Geert Uytterhoeven Cc: Jonathan Corbet , Mike Turquette , Stephen Boyd , Tetsuo Handa , linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, Geert Uytterhoeven Subject: Re: [PATCH 3/3] lib/vsprintf: Add %pC{,n,r} format specifiers for clocks Message-Id: <20150227141837.0bca29d9a33c5b107a786a7a@linux-foundation.org> In-Reply-To: <1424949183-31425-4-git-send-email-geert@linux-m68k.org> References: <1424949183-31425-1-git-send-email-geert@linux-m68k.org> <1424949183-31425-4-git-send-email-geert@linux-m68k.org> X-Mailer: Sylpheed 3.4.1 (GTK+ 2.24.23; x86_64-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, 26 Feb 2015 12:13:03 +0100 Geert Uytterhoeven wrote: > From: Geert Uytterhoeven > > Add format specifiers for printing struct clk: > - '%pC' or '%pCn': name (Common Clock Framework) or address (legacy > clock framework) of the clock, > - '%pCr': rate of the clock. > > ... > > +static noinline_for_stack > +char *clock(char *buf, char *end, struct clk *clk, struct printf_spec spec, > + const char *fmt) > +{ > + if (!clk) > + return string(buf, end, NULL, spec); > + > + switch (fmt[1]) { > + case 'r': > + return number(buf, end, clk_get_rate(clk), spec); > + > + case 'n': > + default: > +#ifdef CONFIG_COMMON_CLK > + return string(buf, end, __clk_get_name(clk), spec); > +#else > + spec.base = 16; > + spec.field_width = sizeof(unsigned long) * 2 + 2; > + spec.flags |= SPECIAL | SMALL | ZEROPAD; > + return number(buf, end, (unsigned long)clk, spec); > +#endif > + } > +} Seems a bit cruel to teeny systems which don't implement clock. How does this look? Saves 160 bytes in each powerpc build! static noinline_for_stack char *clock(char *buf, char *end, struct clk *clk, struct printf_spec spec, const char *fmt) { #ifdef CONFIG_HAVE_CLK if (clk) { switch (fmt[1]) { case 'r': return number(buf, end, clk_get_rate(clk), spec); case 'n': default: #ifdef CONFIG_COMMON_CLK return string(buf, end, __clk_get_name(clk), spec); #else spec.base = 16; spec.field_width = sizeof(unsigned long) * 2 + 2; spec.flags |= SPECIAL | SMALL | ZEROPAD; return number(buf, end, (unsigned long)clk, spec); #endif } } #endif /* CONFIG_HAVE_CLK */ return string(buf, end, NULL, spec); } diff -puN lib/vsprintf.c~lib-vsprintf-add-%pcnr-format-specifiers-for-clocks-fix lib/vsprintf.c --- a/lib/vsprintf.c~lib-vsprintf-add-%pcnr-format-specifiers-for-clocks-fix +++ a/lib/vsprintf.c @@ -1320,24 +1320,27 @@ static noinline_for_stack char *clock(char *buf, char *end, struct clk *clk, struct printf_spec spec, const char *fmt) { - if (!clk) - return string(buf, end, NULL, spec); +#ifdef CONFIG_HAVE_CLK + if (clk) { + switch (fmt[1]) { + case 'r': + return number(buf, end, clk_get_rate(clk), spec); - switch (fmt[1]) { - case 'r': - return number(buf, end, clk_get_rate(clk), spec); - - case 'n': - default: -#ifdef CONFIG_COMMON_CLK - return string(buf, end, __clk_get_name(clk), spec); -#else - spec.base = 16; - spec.field_width = sizeof(unsigned long) * 2 + 2; - spec.flags |= SPECIAL | SMALL | ZEROPAD; - return number(buf, end, (unsigned long)clk, spec); -#endif + case 'n': + default: +#ifdef CONFIG_COMMON_CLK + return string(buf, end, __clk_get_name(clk), spec); +#else + spec.base = 16; + spec.field_width = sizeof(unsigned long) * 2 + 2; + spec.flags |= SPECIAL | SMALL | ZEROPAD; + return number(buf, end, (unsigned long)clk, spec); +#endif + } } +#endif /* CONFIG_HAVE_CLK */ + + return string(buf, end, NULL, spec); } int kptr_restrict __read_mostly; _