Re: [RFC] Sectionized printk data
From: Johannes Weiner
Date: Mon Feb 04 2008 - 15:24:51 EST
Hi Sam,
Sam Ravnborg <sam@xxxxxxxxxxxx> writes:
> On Mon, Feb 04, 2008 at 04:48:34PM +0100, Johannes Weiner wrote:
>> Hi,
>>
>> current approaches to have printk format strings in the corresponding
>> data section to the function they appear in look like the following (at
>> least what I have seen so far):
>>
>> int __init some_function(void)
>> {
>> static char errmsg[] __initdata = "failure %s in %s\n";
>>
>> [...]
>> printk(errmsg);
>> [...]
>> }
>>
>> The attached patch allows something along the lines:
>>
>> int __init some_function(void)
>> {
>> [...]
>> pr_init(KERN_WARNING "failure %s in %s\n", ...);
>> [...]
>> }
>>
>> Another idea I had was to make printk a macro that figures out the
>> section of the surrounding function and then moves the data
>> automatically when it is a literal, but I couldn't find mechanisms that
>> allow this. Anyone of you got an idea?
>>
>> What do you think in general?
>
> What is the rationale behind this?
> In other words why should we investigate time looking into the matter?
>
> If you say "saving memory" then please let us know with specific examples
> in what area these savings will really pay off.
I was not claiming anything. The thing is that I have seen people using
code as schematized in the first code example. And the point of this
patch is to make the placing of string literals in disposable sections -
which is already done - more convenient.
Using code as in the first example is just ugly. My approach is to make
it less ugly. But after all, it was not my idea to move the string
literals.
drivers/net/3c505.c does it, grep for notfound_msg for an in-tree
example.
You were asking me my own question. I placed an `RFC' in the Subject:
because I am interested in your (and others) view on this topic.
I will convert some of the code to use the macros I introduced and look
if it gains some significant size improvements on a common desktop
configuration as I have it on my laptop.
Hannes
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/