All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnd Bergmann <arnd@arndb.de>
To: Rob Landley <rob@landley.net>
Cc: linux-tiny@selenic.com, Tim Bird <tim.bird@am.sony.com>,
	linux kernel <linux-kernel@vger.kernel.org>,
	CE Linux Developers List <celinux-dev@tree.celinuxforum.org>,
	Michael Opdenacker <michael@free-electrons.com>
Subject: Re: [Announce] Linux-tiny project revival
Date: Thu, 27 Sep 2007 09:00:36 +0200	[thread overview]
Message-ID: <200709270900.36602.arnd@arndb.de> (raw)
In-Reply-To: <200709201538.43093.rob@landley.net>

On Thursday 20 September 2007, you wrote:
> So instead of:
>   printk(KERN_NOTICE "Fruit=%d\n", banana);
> It would now be:
>   printk(KERN_NOTICE, "Fruit=%d\n", banana);
> 
> Change the header from:
>   #define KERN_NOTICE "<5>"
> to:
>   #define KERN_NOTICE 5
> 
> Then you can change the printk guts to do something vaguely like (untested):
> #define printk(arg1, arg2, ...) actual_printk("<" #arg1 ">" arg2, __VA_ARGS__)
> 
> And so far no behavior has changed.  But now the _fun_ part is, you can add a 
> config symbol for "what is the minimum loglevel I care about?"  Set that as a 
> number from 0-9.  And then you can define the printk to do:
> 
> #define printk(level, str, ...) \
>   do { \
>     if (level < CONFIG_PRINTK_DOICARE) \
>       actual_printk("<" #level ">" str, __VA_ARGS__); \
>   } while(0);
> 

Assuming that we want to go down that road, I think you can do better with
more evil macro magic, by using something along the lines of

#define KERN_NOTICE "<5>",

#define PRINTK_CONTINUED "",

 #define printk(level, str, ...) \
   do { \
     if (sizeof(level) == 1) /* continued printk */\
	actual_printk(str, __VA_ARGS__); \
     else if ((level[1] - '0') < CONFIG_PRINTK_DOICARE) \
       actual_printk(level str, __VA_ARGS__); \
   } while(0);

Then you don't have to change every single printk in the kernel, but
only those that don't currently come with a log level. More importantly,
you can do the conversion without a flag day, by spreading (an empty)
PRINTK_CONTINUED in places that do need a printk without a log level.

	Arnd <><

  parent reply	other threads:[~2007-09-27  7:12 UTC|newest]

Thread overview: 63+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-09-19 18:03 [Announce] Linux-tiny project revival Tim Bird
2007-09-19 18:47 ` Luis R. Rodriguez
2007-09-19 19:31   ` Tim Bird
2007-09-19 19:01 ` Christian MICHON
2007-09-19 19:28 ` Andi Kleen
2007-09-19 19:41   ` Tim Bird
2007-09-19 20:45     ` Valdis.Kletnieks
2007-09-19 21:29       ` Tim Bird
2007-09-19 22:29         ` Michael Opdenacker
2007-09-19 21:28 ` [Celinux-dev] " Andrew Morton
2007-09-19 21:41   ` Tim Bird
2007-09-19 22:38     ` Michael Opdenacker
2007-09-20  9:10       ` Andy Whitcroft
2007-09-20 17:10         ` Monster switch for small size (was Linux-tiny revival) Tim Bird
2007-09-20 21:41           ` Rob Landley
2007-09-20 20:50             ` Randy Dunlap
2007-09-21  6:35             ` Christian MICHON
2007-09-20 23:02   ` [Celinux-dev] [Announce] Linux-tiny project revival Rob Landley
2007-09-20 20:38 ` Rob Landley
2007-09-20 19:58   ` Alexey Dobriyan
2007-09-20 20:22     ` printk proposal - (was Linux-tiny project revival) Tim Bird
2007-09-21 19:07       ` Alexey Dobriyan
2007-09-21 20:53         ` Rob Landley
2007-09-20 22:02     ` [Announce] Linux-tiny project revival Rob Landley
2007-09-20 21:22       ` Jared Hulbert
2007-09-20 22:53         ` Rob Landley
2007-09-20 22:15       ` [Celinux-dev] " Gross, Mark
2007-09-21  0:57         ` Message codes (Re: [Announce] Linux-tiny project revival) Oleg Verych
2007-09-21 14:18           ` Gross, Mark
2007-09-21 21:15             ` Rob Landley
2007-09-21 22:12               ` Gross, Mark
2007-09-21 22:33                 ` Joe Perches
2007-09-21 22:39                   ` Gross, Mark
2007-09-22  1:55               ` Oleg Verych
2007-09-21 13:29       ` [Announce] Linux-tiny project revival Dick Streefland
2007-09-20 20:16   ` Joe Perches
2007-09-25 11:43     ` [Celinux-dev] " Geert Uytterhoeven
2007-09-20 21:26   ` Indan Zupancic
2007-09-20 23:18     ` Rob Landley
2007-09-20 23:06       ` Indan Zupancic
2007-09-21  6:29         ` Sam Ravnborg
2007-09-24 18:13           ` Adrian Bunk
2007-09-26  6:24             ` Rob Landley
2007-09-21 17:16       ` Valdis.Kletnieks
2007-09-21 17:45         ` Joe Perches
2007-09-21 23:05           ` Rob Landley
2007-09-21 23:08             ` Joe Perches
2007-09-21 21:34       ` Kyle Moffett
2007-09-21 22:05         ` Joe Perches
2007-09-21 22:57           ` Kyle Moffett
2007-09-20 21:58   ` Tim Bird
2007-09-20 22:14     ` Joe Perches
2007-09-21  0:28       ` Rob Landley
2007-09-21  0:03         ` Joe Perches
2007-09-20 23:11     ` Rob Landley
2007-09-21 12:27   ` Bill Davidsen
2007-09-27  7:00   ` Arnd Bergmann [this message]
2007-09-27 16:35     ` Indan Zupancic
2007-09-27 22:21       ` Arnd Bergmann
2007-09-28  8:39         ` Bernd Petrovitsch
2007-09-30 20:37           ` Jörn Engel
2007-09-28  0:06     ` Rob Landley
2007-09-28 14:36       ` Dick Streefland

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200709270900.36602.arnd@arndb.de \
    --to=arnd@arndb.de \
    --cc=celinux-dev@tree.celinuxforum.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tiny@selenic.com \
    --cc=michael@free-electrons.com \
    --cc=rob@landley.net \
    --cc=tim.bird@am.sony.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.