From: Arnd Bergmann <arnd@arndb.de>
To: Julia Lawall <julia.lawall@lip6.fr>
Cc: Shraddha Barke <shraddha.6596@gmail.com>,
outreachy-kernel@googlegroups.com
Subject: Re: [Outreachy kernel] [PATCH 1/2] Staging: lustre: ptlrpc: Make functions static
Date: Thu, 01 Oct 2015 15:57:52 +0200 [thread overview]
Message-ID: <4003012.PLAPRmBvBo@wuerfel> (raw)
In-Reply-To: <alpine.DEB.2.10.1510011544300.2648@hadrien>
On Thursday 01 October 2015 15:49:21 Julia Lawall wrote:
> On Thu, 1 Oct 2015, Arnd Bergmann wrote:
> > On Thursday 01 October 2015 15:20:39 Julia Lawall wrote:
> > > On Thu, 1 Oct 2015, Shraddha Barke wrote:
> > > > > Note that there are hundreds more symbols in lustre that should be made
> > > > > static.
> > > > > Most of them are harder to find because they have a declaration in a header
> > > > > file
> > > > > despite being only used in one place.
> > >
> > > Why does it make it hard to find? One can make a spearate check in .c
> > > files.
> >
> > We currently get a sparse warning for each global identifier definition
> > that is not preceded by a declaration, but since most of our tools
> > (gcc, sparse, coccinelle, ...) work on a single file at a time, they
> > do not know whether a global symbol that is defined in a C file and
> > (incorrectly) declared in a header is used in another C file or not.
>
> OK, but from Coccinlle you can just call grep, and check the extensions on
> the returned file names, so it is not a big problem.
I'm not following here. How exactly would you find symbols like this with coccinelle?
subsystem.h:
extern int subsystem_state;
subsystem.c:
#include "subsystem.h"
long subsystem_state;
static void function(void)
{
...
subsystem_state++;
...
}
with no users of this variable outside of this file.
> > > At least not if the header file is shared
> > > between multipe files. But it still may need to be declared somewhere, if
> > > it is referenced before it is declared in the one file where it is used.
> >
> > I would also consider that a bug we should warn about: basically any
> > 'extern' variable declaration and any forward declaration for a
> > global function (with or without the redundant extern specifier) should
> > be considered a bug. We want the same declaration to be visible by both
> > the file that defines it and the file that uses it so we get warned about
> > type mismatches.
>
> I think there would be warning about type mismatches anyway, if the
> prototype doesn't match with the definition?
The point is that this only works if all files include the same header.
e.g.
subsystem.h:
extern int subsystem_state;
subsystem.c:
#include "subsystem.h"
long subsystem_state;
driver.c:
/* no #include subsystem.h */
extern long subsystem_state;
Arnd
next prev parent reply other threads:[~2015-10-01 13:57 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-01 9:37 [PATCH 0/2] Declare functions and structures as static Shraddha Barke
2015-10-01 9:37 ` [PATCH 1/2] Staging: lustre: ptlrpc: Make functions static Shraddha Barke
2015-10-01 10:03 ` [Outreachy kernel] " Arnd Bergmann
2015-10-01 10:05 ` Shraddha Barke
2015-10-01 13:20 ` Julia Lawall
2015-10-01 13:34 ` Shraddha Barke
2015-10-01 13:37 ` Arnd Bergmann
2015-10-01 13:49 ` Julia Lawall
2015-10-01 13:57 ` Arnd Bergmann [this message]
2015-10-01 14:12 ` Julia Lawall
2015-10-01 20:53 ` Arnd Bergmann
2015-10-01 21:21 ` Julia Lawall
2015-10-01 11:54 ` Sudip Mukherjee
2015-10-01 9:37 ` [PATCH 2/2] Staging: lustre: obdclass: Declare structure as static Shraddha Barke
2015-10-01 9:54 ` [Outreachy kernel] " Arnd Bergmann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4003012.PLAPRmBvBo@wuerfel \
--to=arnd@arndb.de \
--cc=julia.lawall@lip6.fr \
--cc=outreachy-kernel@googlegroups.com \
--cc=shraddha.6596@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.