[lkml]   [2003]   [Aug]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectRe: [PATCH 1/4] Net device error logging, revised
Stephen Hemminger wrote:
> > The following options come to mind:
> > 1. Keep the msg buffer, but make it smaller. Around 120 bytes would probably be
> > big enough for the vast majority of messages. (printk() uses a 1024-byte buffer,
> > but it's static -- see #2.)
> >
> > 2. Use a big, static buffer, protected by a spinlock. printk() does this.
> >
> > 3. Do the whole thing in a macro, as in previous proposals. The size of the macro
> > expansion could be reduced somewhat by doing the encode-prefix step in a function --
> > something like:
[more on #3 snipped]
> Is there some way to tack copy and prepend what you want onto the format
> string, and add additional arguments to the call to printk? That way you
> wouldn't need space for the potentially large resulting string, but only
> enough room for the expanded format string.

Interesting idea. I pondered this for a while. But even if you postulate
a varargs version of printk (which doesn't exist), it's not really
feasible to do this in a function. There's no way for a function to
prepend args to a va_list. That means you'd have to encode the text of
the prefix as part of the format string, and that would require you to
allocate room for prefix+format, which is still a lot of stack. Also,
the fact that the interface name itself may contain "%d" or some such
makes it even messier.

Greg K-H thinks #2 is a reasonable solution (you're about to serialize on printk's
lock anyway), so I'll go with that.

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
More majordomo info at
Please read the FAQ at

 \ /
  Last update: 2005-03-22 13:48    [W:0.058 / U:2.696 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site