* [RFC PATCH - diffstat only] include/net: Remove extern from function prototypes @ 2013-07-23 17:58 Joe Perches 2013-07-25 1:27 ` Cong Wang 2013-07-30 7:10 ` [RFC PATCH - diffstat only] include/net: Remove extern from function prototypes David Miller 0 siblings, 2 replies; 10+ messages in thread From: Joe Perches @ 2013-07-23 17:58 UTC (permalink / raw) To: netdev; +Cc: LKML Function prototypes don't need to be declared extern in .h files. It's assumed by the compiler and is as unnecessary as using auto is when declaring automatic/local variables in a block. I ran a script to remove these unnecessary extern uses from function prototypes in include/net/ as well as reflow the function arguments to 80 cols. It's 370KB, far too large to submit at once. Of course it could be broken into multiple patches for the various directories/subsystems. I believe it makes grepping for extern useful as all the matches are actual variables and structs. Thoughts? --- include/net/act_api.h | 60 ++-- include/net/addrconf.h | 151 +++++----- include/net/af_rxrpc.h | 35 ++- include/net/af_unix.h | 16 +- include/net/arp.h | 30 +- include/net/ax25.h | 215 +++++++------- include/net/bluetooth/bluetooth.h | 16 +- include/net/bluetooth/hci_core.h | 20 +- include/net/bluetooth/rfcomm.h | 4 +- include/net/caif/caif_hsi.h | 2 +- include/net/cfg80211.h | 34 +-- include/net/checksum.h | 10 +- include/net/cls_cgroup.h | 2 +- include/net/compat.h | 48 ++-- include/net/dcbevent.h | 6 +- include/net/dn.h | 20 +- include/net/dn_dev.h | 30 +- include/net/dn_fib.h | 46 ++- include/net/dn_neigh.h | 12 +- include/net/dn_nsp.h | 49 ++-- include/net/dn_route.h | 13 +- include/net/dst.h | 22 +- include/net/esp.h | 2 +- include/net/fib_rules.h | 19 +- include/net/flow.h | 10 +- include/net/flow_keys.h | 2 +- include/net/garp.h | 28 +- include/net/gen_stats.h | 52 ++-- include/net/genetlink.h | 20 +- include/net/icmp.h | 10 +- include/net/inet6_connection_sock.h | 33 ++- include/net/inet6_hashtables.h | 40 +-- include/net/inet_common.h | 38 +-- include/net/inet_connection_sock.h | 80 +++--- include/net/inet_hashtables.h | 70 ++--- include/net/inet_sock.h | 4 +- include/net/inet_timewait_sock.h | 38 +-- include/net/inetpeer.h | 10 +- include/net/ip.h | 141 ++++----- include/net/ip6_fib.h | 50 ++-- include/net/ip6_route.h | 93 +++--- include/net/ip_fib.h | 58 ++-- include/net/ip_vs.h | 212 +++++++------- include/net/ipv6.h | 277 +++++++++--------- include/net/ipx.h | 12 +- include/net/irda/ircomm_tty.h | 14 +- include/net/irda/irda.h | 22 +- include/net/irda/irlap_event.h | 2 +- include/net/irda/irlap_frame.h | 4 +- include/net/iw_handler.h | 38 +-- include/net/lapb.h | 52 ++-- include/net/llc.h | 50 ++-- include/net/llc_c_ac.h | 190 ++++++------- include/net/llc_c_ev.h | 240 ++++++++-------- include/net/llc_conn.h | 38 +-- include/net/llc_if.h | 8 +- include/net/llc_pdu.h | 30 +- include/net/llc_s_ac.h | 20 +- include/net/llc_s_ev.h | 20 +- include/net/llc_sap.h | 26 +- include/net/mac80211.h | 10 +- include/net/mrp.h | 28 +- include/net/ndisc.h | 56 ++-- include/net/neighbour.h | 98 ++++--- include/net/net_namespace.h | 26 +- include/net/netevent.h | 6 +- include/net/netfilter/ipv4/nf_conntrack_ipv4.h | 6 +- include/net/netfilter/ipv4/nf_defrag_ipv4.h | 2 +- include/net/netfilter/ipv6/nf_defrag_ipv6.h | 10 +- include/net/netfilter/nf_conntrack.h | 56 ++-- include/net/netfilter/nf_conntrack_acct.h | 8 +- include/net/netfilter/nf_conntrack_core.h | 32 +-- include/net/netfilter/nf_conntrack_ecache.h | 25 +- include/net/netfilter/nf_conntrack_extend.h | 2 +- include/net/netfilter/nf_conntrack_helper.h | 32 ++- include/net/netfilter/nf_conntrack_l3proto.h | 16 +- include/net/netfilter/nf_conntrack_l4proto.h | 24 +- include/net/netfilter/nf_conntrack_timeout.h | 8 +- include/net/netfilter/nf_conntrack_timestamp.h | 8 +- include/net/netfilter/nf_nat.h | 10 +- include/net/netfilter/nf_nat_core.h | 10 +- include/net/netfilter/nf_nat_helper.h | 62 ++-- include/net/netfilter/nf_nat_l3proto.h | 26 +- include/net/netfilter/nf_nat_l4proto.h | 31 +- include/net/netfilter/nf_queue.h | 2 +- include/net/netfilter/xt_rateest.h | 4 +- include/net/netlink.h | 64 ++--- include/net/netprio_cgroup.h | 2 +- include/net/netrom.h | 90 +++--- include/net/p8022.h | 6 +- include/net/ping.h | 9 - include/net/pkt_cls.h | 36 +-- include/net/pkt_sched.h | 40 +-- include/net/protocol.h | 24 +- include/net/psnap.h | 2 +- include/net/raw.h | 6 +- include/net/rawv6.h | 4 +- include/net/request_sock.h | 12 +- include/net/rose.h | 113 ++++---- include/net/route.h | 46 +-- include/net/rtnetlink.h | 40 +-- include/net/sch_generic.h | 51 ++-- include/net/scm.h | 10 +- include/net/sctp/sctp.h | 14 +- include/net/secure_seq.h | 26 +- include/net/snmp.h | 2 +- include/net/sock.h | 240 ++++++++-------- include/net/stp.h | 4 +- include/net/tcp.h | 380 ++++++++++++------------- include/net/udp.h | 88 +++--- include/net/udplite.h | 4 +- include/net/wext.h | 16 +- include/net/wimax.h | 32 +-- include/net/x25.h | 141 ++++----- include/net/xfrm.h | 334 +++++++++++----------- 115 files changed, 2636 insertions(+), 2692 deletions(-) ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [RFC PATCH - diffstat only] include/net: Remove extern from function prototypes 2013-07-23 17:58 [RFC PATCH - diffstat only] include/net: Remove extern from function prototypes Joe Perches @ 2013-07-25 1:27 ` Cong Wang 2013-07-25 1:41 ` Joe Perches 2013-07-30 7:10 ` [RFC PATCH - diffstat only] include/net: Remove extern from function prototypes David Miller 1 sibling, 1 reply; 10+ messages in thread From: Cong Wang @ 2013-07-25 1:27 UTC (permalink / raw) To: linux-kernel; +Cc: netdev On Tue, 23 Jul 2013 at 17:58 GMT, Joe Perches <joe@perches.com> wrote: > Function prototypes don't need to be declared > extern in .h files. It's assumed by the compiler > and is as unnecessary as using auto is when > declaring automatic/local variables in a block. > Since we all know this, why bother it? Having "extern" doesn't harm readability, instead it probably helps. ... > > I believe it makes grepping for extern useful as > all the matches are actual variables and structs. > You need a semantic tool. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [RFC PATCH - diffstat only] include/net: Remove extern from function prototypes 2013-07-25 1:27 ` Cong Wang @ 2013-07-25 1:41 ` Joe Perches 2013-07-25 1:47 ` Hannes Frederic Sowa 0 siblings, 1 reply; 10+ messages in thread From: Joe Perches @ 2013-07-25 1:41 UTC (permalink / raw) To: Cong Wang; +Cc: linux-kernel, netdev On Thu, 2013-07-25 at 01:27 +0000, Cong Wang wrote: > On Tue, 23 Jul 2013 at 17:58 GMT, Joe Perches <joe@perches.com> wrote: You dropped the author from the cc list. Always reply to the author. > > Function prototypes don't need to be declared > > extern in .h files. It's assumed by the compiler > > and is as unnecessary as using auto is when > > declaring automatic/local variables in a block. > > > Since we all know this, why bother it? If everyone knew this, new ones wouldn't be added. But a lot are. Removing extern makes prototypes shorter and more readable. More prototypes fit in a single line More arguments fit on a multi-line prototypes. > Having "extern" doesn't harm > readability, instead it probably helps. Sure, just like auto does. Why isn't that used? > > I believe it makes grepping for extern useful as > > all the matches are actual variables and structs. > You need a semantic tool. No, not really. I'm fairly comfortable with spatch. spatch takes a long time to run for a lot of things. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [RFC PATCH - diffstat only] include/net: Remove extern from function prototypes 2013-07-25 1:41 ` Joe Perches @ 2013-07-25 1:47 ` Hannes Frederic Sowa 2013-07-25 2:59 ` [PATCH] checkpatch: Warn when using extern with function prototypes in .h files Joe Perches 2013-08-01 12:21 ` David Howells 0 siblings, 2 replies; 10+ messages in thread From: Hannes Frederic Sowa @ 2013-07-25 1:47 UTC (permalink / raw) To: Joe Perches; +Cc: Cong Wang, linux-kernel, netdev On Wed, Jul 24, 2013 at 06:41:20PM -0700, Joe Perches wrote: > On Thu, 2013-07-25 at 01:27 +0000, Cong Wang wrote: > > On Tue, 23 Jul 2013 at 17:58 GMT, Joe Perches <joe@perches.com> wrote: > > You dropped the author from the cc list. > Always reply to the author. > > > > Function prototypes don't need to be declared > > > extern in .h files. It's assumed by the compiler > > > and is as unnecessary as using auto is when > > > declaring automatic/local variables in a block. > > > > > Since we all know this, why bother it? > > If everyone knew this, new ones wouldn't be added. > But a lot are. Couldn't checkpatch take care of these? Greetings, Hannes ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH] checkpatch: Warn when using extern with function prototypes in .h files 2013-07-25 1:47 ` Hannes Frederic Sowa @ 2013-07-25 2:59 ` Joe Perches 2013-08-01 12:21 ` David Howells 1 sibling, 0 replies; 10+ messages in thread From: Joe Perches @ 2013-07-25 2:59 UTC (permalink / raw) To: Andrew Morton Cc: Andy Whitcroft, Hannes Frederic Sowa, Cong Wang, linux-kernel, netdev Using the extern keyword on function prototypes is superfluous visual noise so suggest removing it. Using extern can cause unnecessary line wrapping at 80 columns and unnecessarily long multi-line function prototypes. Suggested-by: Hannes Frederic Sowa <hannes@stressinduktion.org> Signed-off-by: Joe Perches <joe@perches.com> --- On Thu, 2013-07-25 at 03:47 +0200, Hannes Frederic Sowa wrote: > On Wed, Jul 24, 2013 at 06:41:20PM -0700, Joe Perches wrote: > > On Thu, 2013-07-25 at 01:27 +0000, Cong Wang wrote: > > > On Tue, 23 Jul 2013 at 17:58 GMT, Joe Perches <joe@perches.com> wrote: > > > > Function prototypes don't need to be declared > > > > extern in .h files. It's assumed by the compiler > > > > and is as unnecessary as using auto is when > > > > declaring automatic/local variables in a block. > > > Since we all know this, why bother it? > > If everyone knew this, new ones wouldn't be added. > > But a lot are. > Couldn't checkpatch take care of these? checkpatch doesn't work well for multiple lines so this doesn't work on things like extern unsigned long foo(type bar); but it does for the single line function prototypes. Using --fix removes them. scripts/checkpatch.pl | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl index 6918517..23126d4 100755 --- a/scripts/checkpatch.pl +++ b/scripts/checkpatch.pl @@ -3866,6 +3866,16 @@ sub process { } } +# check for new externs in .h files. + if ($realfile =~ /\.h$/ && + $line =~ /^\+\s*(extern\s+)$Type\s*$Ident\s*\(/s) { + if (WARN("AVOID_EXTERNS", + "extern prototypes should be avoided in .h files\n" . $herecurr) && + $fix) { + $fixed[$linenr - 1] =~ s/(.*)\bextern\b\s*(.*)/$1$2/; + } + } + # check for new externs in .c files. if ($realfile =~ /\.c$/ && defined $stat && $stat =~ /^.\s*(?:extern\s+)?$Type\s+($Ident)(\s*)\(/s) -- 1.8.1.2.459.gbcd45b4.dirty ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH] checkpatch: Warn when using extern with function prototypes in .h files 2013-07-25 1:47 ` Hannes Frederic Sowa 2013-07-25 2:59 ` [PATCH] checkpatch: Warn when using extern with function prototypes in .h files Joe Perches @ 2013-08-01 12:21 ` David Howells 2013-08-01 13:00 ` Arend van Spriel 1 sibling, 1 reply; 10+ messages in thread From: David Howells @ 2013-08-01 12:21 UTC (permalink / raw) To: Joe Perches Cc: dhowells, Andrew Morton, Andy Whitcroft, Hannes Frederic Sowa, Cong Wang, linux-kernel, netdev Joe Perches <joe@perches.com> wrote: > Using the extern keyword on function prototypes is superfluous > visual noise so suggest removing it. > > Using extern can cause unnecessary line wrapping at 80 columns > and unnecessarily long multi-line function prototypes. > > Suggested-by: Hannes Frederic Sowa <hannes@stressinduktion.org> > Signed-off-by: Joe Perches <joe@perches.com> Nak. The "extern" makes it much easier to pick out at a glance. Please standardise on there _being_ externs if you must do this. It's gratuitous change anyway and not worth the churn. David ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] checkpatch: Warn when using extern with function prototypes in .h files 2013-08-01 12:21 ` David Howells @ 2013-08-01 13:00 ` Arend van Spriel 0 siblings, 0 replies; 10+ messages in thread From: Arend van Spriel @ 2013-08-01 13:00 UTC (permalink / raw) To: David Howells Cc: Joe Perches, Andrew Morton, Andy Whitcroft, Hannes Frederic Sowa, Cong Wang, linux-kernel, netdev On 08/01/2013 02:21 PM, David Howells wrote: > Joe Perches <joe@perches.com> wrote: > >> Using the extern keyword on function prototypes is superfluous >> visual noise so suggest removing it. >> >> Using extern can cause unnecessary line wrapping at 80 columns >> and unnecessarily long multi-line function prototypes. >> >> Suggested-by: Hannes Frederic Sowa <hannes@stressinduktion.org> >> Signed-off-by: Joe Perches <joe@perches.com> > > Nak. > > The "extern" makes it much easier to pick out at a glance. Really? Grouping function prototypes within the header file is much more helpful for spotting them. Regards, Arend > Please standardise on there _being_ externs if you must do this. > > It's gratuitous change anyway and not worth the churn. > > David > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ > ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [RFC PATCH - diffstat only] include/net: Remove extern from function prototypes 2013-07-23 17:58 [RFC PATCH - diffstat only] include/net: Remove extern from function prototypes Joe Perches 2013-07-25 1:27 ` Cong Wang @ 2013-07-30 7:10 ` David Miller 2013-07-30 7:38 ` Stephen Rothwell 1 sibling, 1 reply; 10+ messages in thread From: David Miller @ 2013-07-30 7:10 UTC (permalink / raw) To: joe; +Cc: netdev, linux-kernel From: Joe Perches <joe@perches.com> Date: Tue, 23 Jul 2013 10:58:11 -0700 > Function prototypes don't need to be declared > extern in .h files. It's assumed by the compiler > and is as unnecessary as using auto is when > declaring automatic/local variables in a block. > > I ran a script to remove these unnecessary extern > uses from function prototypes in include/net/ as > well as reflow the function arguments to 80 cols. > > It's 370KB, far too large to submit at once. > > Of course it could be broken into multiple patches > for the various directories/subsystems. No objections from me. Please submit a small number at a time so that my already overflowing backlog isn't overwhelmed even more. Thanks. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [RFC PATCH - diffstat only] include/net: Remove extern from function prototypes 2013-07-30 7:10 ` [RFC PATCH - diffstat only] include/net: Remove extern from function prototypes David Miller @ 2013-07-30 7:38 ` Stephen Rothwell 2013-07-30 7:49 ` David Miller 0 siblings, 1 reply; 10+ messages in thread From: Stephen Rothwell @ 2013-07-30 7:38 UTC (permalink / raw) To: Joe Perches; +Cc: David Miller, netdev, linux-kernel [-- Attachment #1: Type: text/plain, Size: 1123 bytes --] Hi Joe, On Tue, 30 Jul 2013 00:10:01 -0700 (PDT) David Miller <davem@davemloft.net> wrote: > > From: Joe Perches <joe@perches.com> > Date: Tue, 23 Jul 2013 10:58:11 -0700 > > > Function prototypes don't need to be declared > > extern in .h files. It's assumed by the compiler > > and is as unnecessary as using auto is when > > declaring automatic/local variables in a block. > > > > I ran a script to remove these unnecessary extern > > uses from function prototypes in include/net/ as > > well as reflow the function arguments to 80 cols. > > > > It's 370KB, far too large to submit at once. > > > > Of course it could be broken into multiple patches > > for the various directories/subsystems. > > No objections from me. I must admit I prefer the other way (i.e. with the explicit extern). If nothing else it makes it consistent with variable declarations in header files (which need the extern) and "static inlines" ... Making these churn changes also will almost certainly cause unnecessary conflicts :-( -- Cheers, Stephen Rothwell sfr@canb.auug.org.au [-- Attachment #2: Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [RFC PATCH - diffstat only] include/net: Remove extern from function prototypes 2013-07-30 7:38 ` Stephen Rothwell @ 2013-07-30 7:49 ` David Miller 0 siblings, 0 replies; 10+ messages in thread From: David Miller @ 2013-07-30 7:49 UTC (permalink / raw) To: sfr; +Cc: joe, netdev, linux-kernel From: Stephen Rothwell <sfr@canb.auug.org.au> Date: Tue, 30 Jul 2013 17:38:00 +1000 > I must admit I prefer the other way (i.e. with the explicit extern). If > nothing else it makes it consistent with variable declarations in header > files (which need the extern) and "static inlines" ... > > Making these churn changes also will almost certainly cause unnecessary > conflicts :-( Regardless of preferences, the whole tree is a mix, and we should choose one way or the other consistently. It seems like new code in other major subsystems are using the no-extern scheme, and I'm more than happy to follow suit. ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2013-08-01 13:00 UTC | newest] Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2013-07-23 17:58 [RFC PATCH - diffstat only] include/net: Remove extern from function prototypes Joe Perches 2013-07-25 1:27 ` Cong Wang 2013-07-25 1:41 ` Joe Perches 2013-07-25 1:47 ` Hannes Frederic Sowa 2013-07-25 2:59 ` [PATCH] checkpatch: Warn when using extern with function prototypes in .h files Joe Perches 2013-08-01 12:21 ` David Howells 2013-08-01 13:00 ` Arend van Spriel 2013-07-30 7:10 ` [RFC PATCH - diffstat only] include/net: Remove extern from function prototypes David Miller 2013-07-30 7:38 ` Stephen Rothwell 2013-07-30 7:49 ` David Miller
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).