All of lore.kernel.org
 help / color / mirror / Atom feed
From: Matthew Wilcox <matthew@wil.cx>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: linuxppc-dev@ozlabs.org, linux-ia64@vger.kernel.org,
	Linus Torvalds <torvalds@linux-foundation.org>,
	"David S. Miller" <davem@davemloft.net>,
	Peter Anvin <hpa@zytor.com>
Subject: Re: the printk problem
Date: Fri, 04 Jul 2008 20:42:53 +0000	[thread overview]
Message-ID: <20080704204252.GM14894@parisc-linux.org> (raw)
In-Reply-To: <20080704132716.f1e12554.akpm@linux-foundation.org>

On Fri, Jul 04, 2008 at 01:27:16PM -0700, Andrew Morton wrote:
> On Fri, 4 Jul 2008 13:02:05 -0700 (PDT) Linus Torvalds <torvalds@linux-foundation.org> wrote:
> > > so I think we could easily just say that we extend %p in various ways:
> > > 
> > >  - %pS - print pointer as a symbol
> > > 
> > > and leave tons of room for future extensions for different kinds of 
> > > pointers. 
> 
> If this takes off we might want a register-your-printk-handler
> interface.  Maybe.
> 
> We also jump through hoops to print things like sector_t and
> resource_size_t.  They always need to be cast to `unsiged long long',
> which generates additional stack space and text in some setups.

The thing is that GCC checks types.  So it's fine to add "print this
pointer specially", but you can't in general add new printf arguments
without also hacking GCC.  Unless you use -Wno-format, and require
sparse to check special kernel types.

> And then there's the perennial "need to cast u64 to unsigned long long
> to print it".  If we were to do
> 
> 	printk("%SL", (void *)some_u64);
> 
> then that's still bloody ugly, but it'll save a little text-n-stack.

u64 is easy to fix, and I don't know why we haven't.  Just make it
unsigned long long on all architectures.

-- 
Intel are signing my paycheques ... these opinions are still mine
"Bill, look, we understand that you're interested in selling us this
operating system, but compare it to ours.  We can't possibly take such
a retrograde step."

WARNING: multiple messages have this Message-ID (diff)
From: Matthew Wilcox <matthew@wil.cx>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: linuxppc-dev@ozlabs.org, linux-ia64@vger.kernel.org,
	Linus Torvalds <torvalds@linux-foundation.org>,
	"David S. Miller" <davem@davemloft.net>,
	Peter Anvin <hpa@zytor.com>
Subject: Re: the printk problem
Date: Fri, 4 Jul 2008 14:42:53 -0600	[thread overview]
Message-ID: <20080704204252.GM14894@parisc-linux.org> (raw)
In-Reply-To: <20080704132716.f1e12554.akpm@linux-foundation.org>

On Fri, Jul 04, 2008 at 01:27:16PM -0700, Andrew Morton wrote:
> On Fri, 4 Jul 2008 13:02:05 -0700 (PDT) Linus Torvalds <torvalds@linux-foundation.org> wrote:
> > > so I think we could easily just say that we extend %p in various ways:
> > > 
> > >  - %pS - print pointer as a symbol
> > > 
> > > and leave tons of room for future extensions for different kinds of 
> > > pointers. 
> 
> If this takes off we might want a register-your-printk-handler
> interface.  Maybe.
> 
> We also jump through hoops to print things like sector_t and
> resource_size_t.  They always need to be cast to `unsiged long long',
> which generates additional stack space and text in some setups.

The thing is that GCC checks types.  So it's fine to add "print this
pointer specially", but you can't in general add new printf arguments
without also hacking GCC.  Unless you use -Wno-format, and require
sparse to check special kernel types.

> And then there's the perennial "need to cast u64 to unsigned long long
> to print it".  If we were to do
> 
> 	printk("%SL", (void *)some_u64);
> 
> then that's still bloody ugly, but it'll save a little text-n-stack.

u64 is easy to fix, and I don't know why we haven't.  Just make it
unsigned long long on all architectures.

-- 
Intel are signing my paycheques ... these opinions are still mine
"Bill, look, we understand that you're interested in selling us this
operating system, but compare it to ours.  We can't possibly take such
a retrograde step."

  parent reply	other threads:[~2008-07-04 20:42 UTC|newest]

Thread overview: 111+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-06-25 13:11 [PATCH] handle failure of irqchip->set_type in setup_irq Uwe Kleine-König
2008-07-02  9:17 ` Uwe Kleine-König
2008-07-02  9:49   ` Andrew Morton
2008-07-02 10:09     ` Uwe Kleine-König
2008-07-04 10:46 ` [PATCH v2] " Uwe Kleine-König
2008-07-04 17:17   ` Andrew Morton
2008-07-04 18:43     ` Uwe Kleine-König
2008-07-04 19:08       ` Andrew Morton
2008-07-09 13:13         ` Uwe Kleine-König
2008-07-09 21:52           ` Andrew Morton
2008-07-10  8:23             ` Uwe Kleine-König
2008-07-10  8:28               ` Andrew Morton
     [not found]   ` <20080704111540.ddffd241.akpm@linux-foundation.org>
     [not found]     ` <alpine.LFD.1.10.0807041147450.2815@woody.linux-foundation.org>
2008-07-04 20:02       ` the printk problem Linus Torvalds
2008-07-04 20:02         ` Linus Torvalds
2008-07-04 20:27         ` Andrew Morton
2008-07-04 20:27           ` Andrew Morton
2008-07-04 20:41           ` Linus Torvalds
2008-07-04 20:41             ` Linus Torvalds
2008-07-04 20:42           ` Matthew Wilcox [this message]
2008-07-04 20:42             ` Matthew Wilcox
2008-07-04 22:01             ` Andrew Morton
2008-07-04 22:01               ` Andrew Morton
2008-07-04 22:01               ` Andrew Morton
2008-07-05  2:03               ` Matthew Wilcox
2008-07-05  2:03                 ` Matthew Wilcox
2008-07-05  2:03                 ` Matthew Wilcox
2008-07-22 10:05                 ` [PATCH] Make u64 long long on all architectures (was: the printk problem) Andrew Morton
2008-07-22 10:05                   ` Andrew Morton
2008-07-22 10:05                   ` [PATCH] Make u64 long long on all architectures (was: the Andrew Morton
2008-07-22 10:36                   ` [PATCH] Make u64 long long on all architectures (was: the printk problem) Michael Ellerman
2008-07-22 10:36                     ` Michael Ellerman
2008-07-22 10:36                     ` [PATCH] Make u64 long long on all architectures (was: the Michael Ellerman
2008-07-22 10:53                     ` [PATCH] Make u64 long long on all architectures (was: the printk problem) Andrew Morton
2008-07-22 10:53                       ` Andrew Morton
2008-07-22 10:53                       ` [PATCH] Make u64 long long on all architectures (was: the Andrew Morton
2008-07-22 11:36                     ` [PATCH] Make u64 long long on all architectures (was: the printk problem) Benjamin Herrenschmidt
2008-07-22 11:36                       ` Benjamin Herrenschmidt
2008-07-22 11:36                       ` [PATCH] Make u64 long long on all architectures (was: the Benjamin Herrenschmidt
2008-07-22 11:35                   ` [PATCH] Make u64 long long on all architectures (was: the printk problem) Benjamin Herrenschmidt
2008-07-22 11:35                     ` Benjamin Herrenschmidt
2008-07-22 11:35                     ` [PATCH] Make u64 long long on all architectures (was: the Benjamin Herrenschmidt
2008-07-05 10:20               ` the printk problem Denys Vlasenko
2008-07-05 10:20                 ` Denys Vlasenko
2008-07-05 10:20                 ` Denys Vlasenko
2008-07-05 11:33               ` Jan Engelhardt
2008-07-05 11:33                 ` Jan Engelhardt
2008-07-05 11:33                 ` Jan Engelhardt
2008-07-04 22:58             ` Benjamin Herrenschmidt
2008-07-04 22:58               ` Benjamin Herrenschmidt
2008-07-04 20:36         ` Matthew Wilcox
2008-07-04 20:36           ` Matthew Wilcox
2008-07-08  1:44           ` Kyle McMartin
2008-07-08  1:44             ` Kyle McMartin
2008-07-04 23:00         ` Benjamin Herrenschmidt
2008-07-04 23:00           ` Benjamin Herrenschmidt
2008-07-04 23:25           ` Linus Torvalds
2008-07-04 23:25             ` Linus Torvalds
2008-07-05 22:32             ` Linus Torvalds
2008-07-05 22:32               ` Linus Torvalds
2008-07-05 22:57               ` Arjan van de Ven
2008-07-05 22:57                 ` Arjan van de Ven
2008-07-06  5:27               ` Ingo Molnar
2008-07-06  5:27                 ` Ingo Molnar
2008-07-06  5:37                 ` Linus Torvalds
2008-07-06  5:37                   ` Linus Torvalds
2008-07-06  5:37                   ` Linus Torvalds
2008-07-06  5:53                   ` Ingo Molnar
2008-07-06  5:53                     ` Ingo Molnar
2008-07-06  5:53                     ` Ingo Molnar
2008-07-06  6:13                     ` Ingo Molnar
2008-07-06  6:13                       ` Ingo Molnar
2008-07-06  6:13                       ` Ingo Molnar
2008-07-07  1:14             ` Benjamin Herrenschmidt
2008-07-07  1:14               ` Benjamin Herrenschmidt
2008-07-07  3:26               ` Stephen Rothwell
2008-07-07  3:28                 ` Michael Ellerman
2008-07-07  4:59                   ` Stephen Rothwell
2008-07-07  3:43                 ` Benjamin Herrenschmidt
2008-07-05 12:52         ` Vegard Nossum
2008-07-05 12:52           ` Vegard Nossum
2008-07-05 12:52           ` Vegard Nossum
2008-07-05 13:24           ` Jan Engelhardt
2008-07-05 13:24             ` Jan Engelhardt
2008-07-05 13:24             ` Jan Engelhardt
2008-07-05 13:50             ` Vegard Nossum
2008-07-05 13:50               ` Vegard Nossum
2008-07-05 13:50               ` Vegard Nossum
2008-07-05 14:07               ` Jan Engelhardt
2008-07-05 14:07                 ` Jan Engelhardt
2008-07-05 14:07                 ` Jan Engelhardt
2008-07-05 17:56           ` Linus Torvalds
2008-07-05 17:56             ` Linus Torvalds
2008-07-05 17:56             ` Linus Torvalds
2008-07-05 18:40             ` Jan Engelhardt
2008-07-05 18:40               ` Jan Engelhardt
2008-07-05 18:40               ` Jan Engelhardt
2008-07-05 18:44               ` Linus Torvalds
2008-07-05 18:44                 ` Linus Torvalds
2008-07-05 18:44                 ` Linus Torvalds
2008-07-05 18:41             ` Vegard Nossum
2008-07-05 18:41               ` Vegard Nossum
2008-07-05 18:41               ` Vegard Nossum
2008-07-05 18:52               ` Matthew Wilcox
2008-07-05 18:52                 ` Matthew Wilcox
2008-07-05 18:52                 ` Matthew Wilcox
2008-07-06  0:02                 ` Pekka Enberg
2008-07-06  0:02                   ` Pekka Enberg
2008-07-06  0:02                   ` Pekka Enberg
2008-07-06  5:17                   ` Randy Dunlap
2008-07-06  5:17                     ` Randy Dunlap
2008-07-06  5:17                     ` Randy Dunlap

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=20080704204252.GM14894@parisc-linux.org \
    --to=matthew@wil.cx \
    --cc=akpm@linux-foundation.org \
    --cc=davem@davemloft.net \
    --cc=hpa@zytor.com \
    --cc=linux-ia64@vger.kernel.org \
    --cc=linuxppc-dev@ozlabs.org \
    --cc=torvalds@linux-foundation.org \
    /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.