From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753617Ab1GOXqe (ORCPT ); Fri, 15 Jul 2011 19:46:34 -0400 Received: from mail.perches.com ([173.55.12.10]:4046 "EHLO mail.perches.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750934Ab1GOXqd (ORCPT ); Fri, 15 Jul 2011 19:46:33 -0400 Subject: Re: [PATCH 11/11 re-post] dynamic_debug: use a single printk() to emit msgs From: Joe Perches To: Jason Baron Cc: Bart Van Assche , gregkh@suse.de, jim.cromie@gmail.com, linux-kernel@vger.kernel.org In-Reply-To: <20110715195903.GA7470@redhat.com> References: <3667c0a87dd8fd64fdf1b1e8107b130a9b41096e.1310657068.git.jbaron@redhat.com> <1310744914.7582.36.camel@Joe-Laptop> <20110715160417.GB2493@redhat.com> <1310746580.7582.50.camel@Joe-Laptop> <20110715195903.GA7470@redhat.com> Content-Type: text/plain; charset="UTF-8" Date: Fri, 15 Jul 2011 16:46:31 -0700 Message-ID: <1310773591.10603.9.camel@Joe-Laptop> Mime-Version: 1.0 X-Mailer: Evolution 2.32.2 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, 2011-07-15 at 15:59 -0400, Jason Baron wrote: > here's Bart's suggestion as re-post. It looks much cleaner to > me... [] > diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c [] > @@ -422,52 +422,46 @@ static int ddebug_exec_query(char *query_string) > return 0; > } > > -static int dynamic_emit_prefix(const struct _ddebug *descriptor) > +#define PREFIX_SIZE 64 > +#define LEFT(wrote) ((PREFIX_SIZE - wrote) > 0) ? (PREFIX_SIZE - wrote) : 0 > + > +static char *dynamic_emit_prefix(const struct _ddebug *desc, char *buf) > { > - char tid[sizeof(int) + sizeof(int)/2 + 4]; > - char lineno[sizeof(int) + sizeof(int)/2]; > + int pos = 0; > > - if (descriptor->flags & _DPRINTK_FLAGS_INCL_TID) { > + pos += snprintf(buf + pos, LEFT(pos), "%s", KERN_DEBUG); > + if (desc->flags & _DPRINTK_FLAGS_INCL_TID) { > if (in_interrupt()) > - snprintf(tid, sizeof(tid), "%s", " "); > + pos += snprintf(buf + pos, LEFT(pos), "%s ", > + ""); scnprintf works without using LEFT. snprintf does as well. http://lkml.org/lkml/2010/7/23/375