> On Thu, 18 Jan 2007 15:23:26 +0000 Russell King <[EMAIL PROTECTED]> wrote: > On Thu, Jan 18, 2007 at 04:31:51PM +0100, Tomas Carnecky wrote: > > Russell King wrote: > > > On Thu, Jan 18, 2007 at 01:58:52PM +0100, Bernhard Walle wrote: > > >> -static char command_line[COMMAND_LINE_SIZE]; > > >> +static char __initdata command_line[COMMAND_LINE_SIZE]; > > > > > > Uninitialised data is placed in the BSS. Adding __initdata to BSS > > > data causes grief. > > > > > > > Static variables are implicitly initialized to zero. Does that also > > count as initialization? > > No. As I say, they're placed in the BSS. The BSS is zeroed as part of > the C runtime initialisation.
I don't understand the objection. With the above change, command_line[] will end up consuming COMMAND_LINE_SIZE bytes of .data.init and will be reliably initialized to all-zeros by the compiler (won't it?) > If you want to place a variable in a specific section, it must be > explicitly initialised. Eg, > > static char __initdata command_line[COMMAND_LINE_SIZE] = ""; > > However, there is a bigger question here: that is the tradeoff between > making this variable part of the on-disk kernel image, but throw away > the memory at runtime, or to leave it in the BSS where it will not be > part of the on-disk kernel image, but will not be thrown away at > runtime. Yes, it'll take some space in vmlinux. We could perhaps create a new __initbss to prevent that, I assume. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/