mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* drop overzealous ERROR: do not initialise statics to 0 or NULL from checkpatch.pl
@ 2008-08-13 10:39 John Kacur
  2008-08-13 11:50 ` John Kacur
  2008-08-13 12:15 ` Arnd Bergmann
  0 siblings, 2 replies; 5+ messages in thread
From: John Kacur @ 2008-08-13 10:39 UTC (permalink / raw)
  To: LKML

Could we drop this somewhat overzealous "ERROR: do not initialise
statics to 0 or NULL" from checkpatch.pl?

Reasoning:
1. This is not part of Documentation/CodingStyle
2. K&R 2nd.ed do it (pg 83, static int bufp = 0;) The purpose is to
remove access to the bufp from external routines, and to avoid name
conflict)
3. It can be a good form of documentation.
4. It creates a lot of needless code churn to change this kind of
thing for no good reason.
5. It doesn't even change the object size (thus kernel size) to do so.
Demo with user space code.

jkacur@linux-ipxk:~/try> cat foo.c
#include <stdio.h>
#include <stdlib.h>

static int a[1000];

/* Function Prototype */
void foo(void);
int main(void)
{
        exit(0);
}

void foo(void)
{
        static int b[1000];
        static int c;
}
jkacur@linux-ipxk:~/try> gcc foo.c
jkacur@linux-ipxk:~/try> size a.out
   text    data     bss     dec     hex filename
   1203     520    8064    9787    263b a.out
jkacur@linux-ipxk:~/try> ls -l a.out
-rwxr-xr-x 1 jkacur users 11237 2008-08-13 12:26 a.out

Now initialize all the statics to 0 and there will be no difference in
the object size
jkacur@linux-ipxk:~/try> cat foo.c
#include <stdio.h>
#include <stdlib.h>

static int a[1000] = {0};

/* Function Prototype */
void foo(void);
int main(void)
{
        exit(0);
}

void foo(void)
{
        static int b[1000] = {0};
        static int c = 0;
}
jkacur@linux-ipxk:~/try> gcc foo.c
jkacur@linux-ipxk:~/try> size a.out
   text    data     bss     dec     hex filename
   1203     520    8064    9787    263b a.out
<----------------------- No difference with the initialization to 0!!!
jkacur@linux-ipxk:~/try> ls -l a.out
-rwxr-xr-x 1 jkacur users 11237 2008-08-13 12:26 a.out
<----------------------- No difference with the initialization to 0!!!


Now if we initialize it to a value other than 0 or NULL, then the bss
is decreased at the expense of the data section, which does indeed
increase the object size, however checkpatch.pl doesn't complain about
this. (it is valid to do this)
jkacur@linux-ipxk:~/try> cat foo.c
#include <stdio.h>
#include <stdlib.h>

static int a[1000] = {1};

/* Function Prototype */
void foo(void);
int main(void)
{
        exit(0);
}

void foo(void)
{
        static int b[1000] = {1};
        static int c = 1;
}
jkacur@linux-ipxk:~/try> gcc foo.c
jkacur@linux-ipxk:~/try> size a.out
   text    data     bss     dec     hex filename
   1203    8568      16    9787    263b a.out
jkacur@linux-ipxk:~/try> ls -l a.out
-rwxr-xr-x 1 jkacur users 19301 2008-08-13 12:27 a.out

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2008-08-14  8:43 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-08-13 10:39 drop overzealous ERROR: do not initialise statics to 0 or NULL from checkpatch.pl John Kacur
2008-08-13 11:50 ` John Kacur
2008-08-13 12:15 ` Arnd Bergmann
2008-08-13 20:19   ` Guennadi Liakhovetski
2008-08-14  8:42     ` John Kacur

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®