public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Andrew Morton <akpm@linux-foundation.org>
To: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Yinghai Lu <yinghai@kernel.org>,
	Linux Kernel Development <linux-kernel@vger.kernel.org>,
	"H. Peter Anvin" <hpa@zytor.com>
Subject: Re: [PATCH] kernel/range: Remove unused definition of ARRAY_SIZE()
Date: Mon, 7 Jun 2010 15:49:09 -0700	[thread overview]
Message-ID: <20100607154909.8581d654.akpm@linux-foundation.org> (raw)
In-Reply-To: <alpine.DEB.2.00.1006052131230.15241@ayla.of.borg>

On Sat, 5 Jun 2010 21:32:15 +0200 (CEST)
Geert Uytterhoeven <geert@linux-m68k.org> wrote:

> Remove duplicate definition of ARRAY_SIZE(), which was never used anyway.
> 
> Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
> ---
>  kernel/range.c |    4 ----
>  1 files changed, 0 insertions(+), 4 deletions(-)
> 
> diff --git a/kernel/range.c b/kernel/range.c
> index 74e2e61..471b66a 100644
> --- a/kernel/range.c
> +++ b/kernel/range.c
> @@ -7,10 +7,6 @@
>  
>  #include <linux/range.h>
>  
> -#ifndef ARRAY_SIZE
> -#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
> -#endif
> -
>  int add_range(struct range *range, int az, int nr_range, u64 start, u64 end)
>  {
>  	if (start >= end)

<discovers range.c>

That's not terribly great code, sorry.

- The names are all wrong.  Should be range_add(),
  range_add_with_merge(), range_subtract(), etc.

- It's completely undocumented!

- It's linked into every vmlinux in the world, many of which won't use it
  afacit.

- The return value from add_range() is a bit odd.  I guess callers must do

	if (add_range(..., ..., nr_range, ..., ...) == nr_range)
		error()

- What does the identifier "az" mean?

- `az' and `nr_range' should be unsigned types.  That would make the
  "Out of slots:" check non-buggy.

- The return value from add_range_with_merge() is unusable!  If it
  did a merge into the final range it will return the caller's
  nr_range.  If it failed to merge it will call add_range() and then
  will return the caller's nr_range if it ran out of space.

  So the caller cannot determine from the return value whether or not
  the range was added.

  Or something.  This is an advantage of actually documenting code -
  it makes people think about such things.

- The main structure seems just wrong, or at least inappropriate.  Should be

	struct range {
		/* Number of ranges presently at *ranges */
		unsigned nr_ranges;
		/* Maximum number of ranges storable at *ranges */
		unsigned max_ranges;
		struct {
			u64 start;
			u64 end;
		} *ranges;
	};

  Or similar.

- I can't be bothered working out what subtract_range() and
  clean_sort_range() are supposed to be doing, so I didn't look at
  them.

c'mon guys, we can do better than this.

  reply	other threads:[~2010-06-07 22:49 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-06-05 19:32 [PATCH] kernel/range: Remove unused definition of ARRAY_SIZE() Geert Uytterhoeven
2010-06-07 22:49 ` Andrew Morton [this message]
2010-06-08  0:44   ` Yinghai Lu

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=20100607154909.8581d654.akpm@linux-foundation.org \
    --to=akpm@linux-foundation.org \
    --cc=geert@linux-m68k.org \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=yinghai@kernel.org \
    /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