2008-03-13 15:37:06

by Andreas Westin XX

[permalink] [raw]
Subject: checkpatch.pl and statics


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


2008-03-13 15:43:45

by Bernd Petrovitsch

[permalink] [raw]
Subject: Re: checkpatch.pl and statics

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

2008-03-16 13:35:12

by Benny Halevy

[permalink] [raw]
Subject: Re: checkpatch.pl and statics

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

2008-03-16 14:14:09

by Bernd Petrovitsch

[permalink] [raw]
Subject: Re: checkpatch.pl and statics

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

2008-03-16 16:24:35

by Benny Halevy

[permalink] [raw]
Subject: Re: checkpatch.pl and statics

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