From: Arnaldo Carvalho de Melo <acme@redhat.com>
To: Jan Engelhardt <jengelh@computergmbh.de>
Cc: Sam Ravnborg <sam@ravnborg.org>,
Johannes Weiner <hannes@saeurebad.de>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: [RFC] Sectionized printk data
Date: Sat, 9 Feb 2008 22:27:18 -0200 [thread overview]
Message-ID: <20080210002718.GT4352@ghostprotocols.net> (raw)
In-Reply-To: <Pine.LNX.4.64.0802100116560.6917@fbirervta.pbzchgretzou.qr>
Em Sun, Feb 10, 2008 at 01:18:18AM +0100, Jan Engelhardt escreveu:
>
> On Feb 9 2008 21:54, Arnaldo Carvalho de Melo wrote:
> >> To drop strings that are only shown once anyway, such as:
> >>
> >> static int __init ebtables_init(void)
> >> {
> >> int ret;
> >>
> >> mutex_lock(&ebt_mutex);
> >> list_add(&ebt_standard_target.list, &ebt_targets);
> >> mutex_unlock(&ebt_mutex);
> >> if ((ret = nf_register_sockopt(&ebt_sockopts)) < 0)
> >> return ret;
> >>
> >> -> printk(KERN_INFO "Ebtables v2.0 registered\n");
> >> return 0;
> >> }
> >>
> >> >If you say "saving memory" then please let us know with specific examples
> >> >in what area these savings will really pay off.
> >
> >[...]
> >With a tool like this the advantage is that no source code has to be
> >changed, strings in __init functions are automagically moved to
> >.init.data, the disadvantage is that not all strings can be moved to
> >.init.data as there were (are?) subsystems that keep pointers to the
> >string passed and another tool would be involved in the build process.
>
> There is one corner case to consider:
>
>
> static char abc[] = "foo";
>
> int __init init_module(void)
> {
> printk(abc);
> }
>
> I am not sure if gcc/ld is smart enough to figure out that abc is
> only ever used from within an __init function and that it could hence
> be moved to __initdata.
The initstr tool mentioned doesn't touches this case, as it doesn't
searches specific functions such as printk, it looks for strings inside
__init marked functions. In the above example abc won't be marked as
__initdata.
So if there are two places where the same string is used, with one being
in a __init function one copy goes to .init.data and another to .data.
- Arnaldo
prev parent reply other threads:[~2008-02-10 0:27 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-02-04 15:48 [RFC] Sectionized printk data Johannes Weiner
2008-02-04 18:07 ` Sam Ravnborg
2008-02-04 20:23 ` Johannes Weiner
2008-02-09 22:08 ` Jan Engelhardt
2008-02-09 23:54 ` Arnaldo Carvalho de Melo
2008-02-10 0:18 ` Jan Engelhardt
2008-02-10 0:27 ` Arnaldo Carvalho de Melo [this message]
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=20080210002718.GT4352@ghostprotocols.net \
--to=acme@redhat.com \
--cc=hannes@saeurebad.de \
--cc=jengelh@computergmbh.de \
--cc=linux-kernel@vger.kernel.org \
--cc=sam@ravnborg.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.