public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Rob Landley <rob@landley.net>
To: Alexey Dobriyan <adobriyan@gmail.com>
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, 20 Sep 2007 17:02:07 -0500	[thread overview]
Message-ID: <200709201702.08126.rob@landley.net> (raw)
In-Reply-To: <20070920195844.GA1805@martell.zuzino.mipt.ru>

On Thursday 20 September 2007 2:58:44 pm Alexey Dobriyan wrote:
> On Thu, Sep 20, 2007 at 03:38:42PM -0500, Rob Landley wrote:
> > I've been playing with an idea for a while to improve the printk()
> > situation, but it's a more intrusive change than I've had time to bang
> > on.
> >
> > Right now, the first argument to printk() is a loglevel, but it's handled
> > via string concatenation.  I'd like to change that to be an integer, and
> > make it an actual comma-separated first argument.  (Mandatory, not
> > optional.)
> >
> > 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?"
>
> Given that
> a) there're plenty of printks without any KERN_* bloat,

> b) there're printks that SHOULD NOT have KERN_* bloat,

So define a level 0 that doesn't prepend any level to the string, and have the 
macro filter that out at the same default level it counts as now.  
(KERN_INFO, I think?)  The tests are all on contants which should resolve at 
compile time and the dead code eliminator should zap it, even if the macro 
gets more complicated it shouldn't result in a bigger binary.

> c) debugging-by-printk method is widely used and this will force
>    additional typing, head-scratching  and swear words

Because we never change kernel internal APIs.  Oh yeah.  Never happens.

> d) time wasted on pointless discussions whether some particular
>    printk ALERT or CRIT

Let me get this straight: you're objecting to actually making the printk 
levels useful enough that developers start to care what they're set to, 
because then they might be motivated to want some of them changed?

Make it useful, people might care, thus they might talk about it...

Sorry, I'm still missing the downside here.

> e) flag day for printk,

That's the main reason I haven't played with it so far, although it would be 
easy to define a new symbol (dprintk or some such, although I note several 
drivers are already using that) and transition gradually.

> I think that this idea is not worth it.

*Shrug*.

My problem is that switching off printk is the single biggest bloat cutter in 
the kernel, yet it makes the resulting system very hard to support.  It 
combines a big upside with a big downside, and I'd like something in between.

> > #define printk(level, str, ...) \
> >   do { \
> >     if (level < CONFIG_PRINTK_DOICARE) \
> >       actual_printk("<" #level ">" str, __VA_ARGS__); \
> >   } while(0);
> >
> > Opinions?
>
> Ick.
>
> 	Alexey "ignore_loglevel" Dobriyan

But ignore_loglevel doesn't decrease the size of the _binary_.  That's what 
we're talking about here with the -tiny tree.  Embedded developers want to 
squeeze more code onto smaller flash/rom chips.  Setting ignore_loglevel does 
prevent these messages from ever being emitted, but they're still in the 
kernel image as dead weight.  It saves noise but doesn't save _space_.

I'm proposing allowing an ignore_loglevel to remove the unused messages at 
compile time so they don't take up space.  Doing that requires the levels to 
be integers so they can be compared with < or >, and the remaining changes 
follow logically.  (To me, anyway...)

Rob
-- 
"One of my most productive days was throwing away 1000 lines of code."
  - Ken Thompson.

  parent reply	other threads:[~2007-09-20 21:02 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     ` Rob Landley [this message]
2007-09-20 21:22       ` [Announce] Linux-tiny project revival 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
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=200709201702.08126.rob@landley.net \
    --to=rob@landley.net \
    --cc=adobriyan@gmail.com \
    --cc=celinux-dev@tree.celinuxforum.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tiny@selenic.com \
    --cc=michael@free-electrons.com \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox