The Linux Kernel Mailing List
 help / color / mirror / Atom feed
From: "Robert P. J. Day" <rpjday@mindspring.com>
To: Tim Schmielau <tim@physik3.uni-rostock.de>
Cc: Jan Engelhardt <jengelh@linux01.gwdg.de>,
	Stefan Richter <stefanr@s5r6.in-berlin.de>,
	Zach Brown <zach.brown@oracle.com>,
	Linux kernel mailing list <linux-kernel@vger.kernel.org>
Subject: Re: lots of code could be simplified by using ARRAY_SIZE()
Date: Sat, 16 Dec 2006 08:55:00 -0500 (EST)	[thread overview]
Message-ID: <Pine.LNX.4.64.0612160845140.6231@localhost.localdomain> (raw)
In-Reply-To: <Pine.LNX.4.63.0612161359370.21852@gockel.physik3.uni-rostock.de>


(i'm not *trying* to belabour this issue ... i am merely succeeding)

On Sat, 16 Dec 2006, Tim Schmielau wrote:

> On Sat, 16 Dec 2006, Robert P. J. Day wrote:
...
> > ... it's amazing the variation that you find beyond the obvious:
> >
> > $ grep -Er "sizeof.*/.*sizeof" . | less
> >
> > ...
> > ./net/key/af_key.c:     sa->sadb_sa_len = sizeof(struct sadb_sa)/sizeof(uint64_t);
> > ./net/xfrm/xfrm_policy.c:       int len = sizeof(struct xfrm_selector) / sizeof(u32);
> > ./net/core/flow.c:      const int n_elem = sizeof(struct flowi) / sizeof(flow_compare_t);
> > ./net/ipv4/netfilter/arp_tables.c:      for (i = 0; i < sizeof(*arp)/sizeof(__u32); i++)
> > ./net/ipv4/af_inet.c:#define INETSW_ARRAY_LEN (sizeof(inetsw_array) / sizeof(struct inet_protosw))
> > ./drivers/net/wireless/ray_cs.c:        .num_standard   = sizeof(ray_handler)/sizeof(iw_handler),
> >
>
> Of the above, af_inet.c and ray_cs.c seem to be good candidates for
> ARRAY_SIZE. You might even remove the INETSW_ARRAY_LEN #define in
> af_inet.c altogether, since ARRAY_SIZE(inetsw_array) is quite
> readable.

note that the above examples i listed were just a *few* of the
examples that didn't match the most common variants:

  sizeof(fubar) / sizeof(fubar[0])
  sizeof(fubar) / sizeof(*fubar)

i just did that to show that, even if i can run a script to handle the
most common variants, there would be lots of manual cleanup left.

> From a first glance, af_key.c is ok but might profit from a comment
> in include/linux/pfkeyv2.h saying that sadb_msg_len is measured in
> 64-bit words per RFC 2367. Though documenting the structs in
> pfkeyv2.h would be quite a bit different from what you initially
> intended...

in fact, i just emailed a short CodingStyle note to randy dunlap
(since he seemed to be heavily into the coding style stuff),
suggesting that a short note be added strongly recommending that one
should use ARRAY_SIZE wherever possible and, if not possible, a
comment should be added explaining why not, if it seems to be useful.

> So, if you have some time to spend on this, manual inspection would
> probably be the most useful thing, since any automatic sed tricks
> will only replace what a human ready would easily understand as
> well.

true enough, but if the most common variants can be handled
automatically, then the remainder would stand out more obviously and
could be manually handled from there.

> If you manually generate cleanup patches, it would be very good to
> check that compilation with allyesconfig generates identical code
> before and after before feeding them through the respective
> maintainers.

i'm actually in the process of trying that as we speak, at least with
the automatic cleanup.  there's no way i'm going to try to get into
manual cleanup with all of those weird variants.  life's too short for
that.  :-)

rday

  reply	other threads:[~2006-12-16 13:59 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-12-13 19:58 lots of code could be simplified by using ARRAY_SIZE() Robert P. J. Day
     [not found] ` <2F8F687E-C5E5-4F7D-9585-97DA97AE1376@oracle.com>
2006-12-14 22:27   ` Robert P. J. Day
2006-12-14 23:13     ` Stefan Richter
2006-12-15 10:36       ` Jan Engelhardt
2006-12-15 20:48         ` Robert P. J. Day
2006-12-15 22:54           ` Tim Schmielau
2006-12-16 11:59             ` Robert P. J. Day
2006-12-16 13:30               ` Tim Schmielau
2006-12-16 13:55                 ` Robert P. J. Day [this message]
2006-12-17 18:13             ` Robert P. J. Day
2006-12-17 18:27               ` Randy Dunlap
2006-12-17 18:25                 ` Robert P. J. Day
2006-12-14 23:16 ` Miguel Ojeda
2006-12-15  0:12   ` Robert P. J. Day
2006-12-16  8:40 ` Pavel Machek
2006-12-16 13:09   ` Robert P. J. Day
2006-12-16 18:14     ` Jan Engelhardt
2006-12-17 11:44       ` Stefan Richter

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=Pine.LNX.4.64.0612160845140.6231@localhost.localdomain \
    --to=rpjday@mindspring.com \
    --cc=jengelh@linux01.gwdg.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stefanr@s5r6.in-berlin.de \
    --cc=tim@physik3.uni-rostock.de \
    --cc=zach.brown@oracle.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox