On Mon, 25 Sep 2000, Keith Owens wrote:
> Jeff Garzik <[EMAIL PROTECTED]> wrote:
> >I am glad this was mentioned...  It is a valid use of __initdata for
> >static variables which you want to go away after boot.  There might be
> >some wasted space lurking here and there due to un-init'd __initdata
> >vars.
> 
> Another case to look at.  I discovered that
> 
> char __initdata *cmd[] = {
>       "command1",
>       "command2",
>       "command3",
>       NULL
>       };
> 
> Stores the 4 pointers of cmd in .init.data but the strings are down in
> .rodata, i.e. they are not discarded after init.  I got around it by
> 
> static __initdata char str_command1[] = "command1";
> static __initdata char str_command2[] = "command2";
> static __initdata char str_command3[] = "command3";
> char __initdata *cmd[] = {
>       str_command1,
>       str_command2,
>       str_command3,
>       NULL
>       };

That reminds me that the tree has some stuff like the following, that
should be cleaned up.  Clearly the intention of developer is not the
result here...

static char *foo __initdata = "bar";

Once again, just the pointer is actually __initdata.  Changing it to
char foo[] fixes things...


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
Please read the FAQ at http://www.tux.org/lkml/

Reply via email to