Hello,
I ran checkpatch.pl on a piece of code I wrote and besides all the other
warnings/errors it complained about a static pointer being initialised
to NULL/0. I fixed it but I'm curious as to why this is not permitted ?
Please cc me as I'm not on the list.
/Andreas
On Don, 2008-03-13 at 16:09 +0100, Andreas Westin XX wrote:
[....]
> I ran checkpatch.pl on a piece of code I wrote and besides all the other
> warnings/errors it complained about a static pointer being initialised
> to NULL/0. I fixed it but I'm curious as to why this is not permitted ?
Because "uninitialized" data is automatically initialized wit 0. An
explicit initialization with 0/NULL wastes space in the kernel image.
Bernd
--
Firmix Software GmbH http://www.firmix.at/
mobil: +43 664 4416156 fax: +43 1 7890849-55
Embedded Linux Development and Services
On Mar. 13, 2008, 17:43 +0200, Bernd Petrovitsch <[email protected]> wrote:
> On Don, 2008-03-13 at 16:09 +0100, Andreas Westin XX wrote:
> [....]
>> I ran checkpatch.pl on a piece of code I wrote and besides all the other
>> warnings/errors it complained about a static pointer being initialised
>> to NULL/0. I fixed it but I'm curious as to why this is not permitted ?
>
> Because "uninitialized" data is automatically initialized wit 0. An
> explicit initialization with 0/NULL wastes space in the kernel image.
gcc (at least version >= 4.1.2) seems to smarter than that. It
doesn't seem to put data initialized to zero in the initialized data
segment but rather adds it to the uninitialized data. That said,
initializing statically allocated data to zero is superfluous in C
and should be avoided for style/elegance reasons as well.
Benny
>
> Bernd
On Son, 2008-03-16 at 15:34 +0200, Benny Halevy wrote:
> On Mar. 13, 2008, 17:43 +0200, Bernd Petrovitsch <[email protected]> wrote:
> > On Don, 2008-03-13 at 16:09 +0100, Andreas Westin XX wrote:
> > [....]
> >> I ran checkpatch.pl on a piece of code I wrote and besides all the other
> >> warnings/errors it complained about a static pointer being initialised
> >> to NULL/0. I fixed it but I'm curious as to why this is not permitted ?
> >
> > Because "uninitialized" data is automatically initialized wit 0. An
> > explicit initialization with 0/NULL wastes space in the kernel image.
>
> gcc (at least version >= 4.1.2) seems to smarter than that. It
That's good news (and new to me too).
> doesn't seem to put data initialized to zero in the initialized data
> segment but rather adds it to the uninitialized data. That said,
> initializing statically allocated data to zero is superfluous in C
> and should be avoided for style/elegance reasons as well.
Well, one can discuss endlessly about style and elegance ....
Bernd
--
Firmix Software GmbH http://www.firmix.at/
mobil: +43 664 4416156 fax: +43 1 7890849-55
Embedded Linux Development and Services
On Mar. 16, 2008, 16:13 +0200, Bernd Petrovitsch <[email protected]> wrote:
> On Son, 2008-03-16 at 15:34 +0200, Benny Halevy wrote:
>> On Mar. 13, 2008, 17:43 +0200, Bernd Petrovitsch <[email protected]> wrote:
>>> On Don, 2008-03-13 at 16:09 +0100, Andreas Westin XX wrote:
>>> [....]
>>>> I ran checkpatch.pl on a piece of code I wrote and besides all the other
>>>> warnings/errors it complained about a static pointer being initialised
>>>> to NULL/0. I fixed it but I'm curious as to why this is not permitted ?
>>> Because "uninitialized" data is automatically initialized wit 0. An
>>> explicit initialization with 0/NULL wastes space in the kernel image.
>> gcc (at least version >= 4.1.2) seems to smarter than that. It
>
> That's good news (and new to me too).
>
>> doesn't seem to put data initialized to zero in the initialized data
>> segment but rather adds it to the uninitialized data. That said,
>> initializing statically allocated data to zero is superfluous in C
>> and should be avoided for style/elegance reasons as well.
>
> Well, one can discuss endlessly about style and elegance ....
Heh, that's what checkpatch is all about, isn't it? :)
Real errors and warnings should be caught and reported by the compiler...
Benny
>
> Bernd