Re: [PATCH 1/9] kernel: export sound/core/pcm_timer.c gcd implementation

Andrew Morton
2009-06-02T04:51:18Z

On Mon, 1 Jun 2009 13:57:09 +0200 Florian Fainelli <florian@openwrt.org> wrote:

> This patch exports the gcd implementation from
> sound/core/pcm_timer.c into include/linux/kernel.h.
> AR7 uses it in its clock routines.
>
> ...
>
> diff --git a/include/linux/kernel.h b/include/linux/kernel.h
> index 883cd44..878a27a 100644
> --- a/include/linux/kernel.h
> +++ b/include/linux/kernel.h
> @@ -147,6 +147,22 @@ extern int _cond_resched(void);
> (__x < 0) ? -__x : __x; \
> })
>
> +/* Greatest common divisor */
> +static inline unsigned long gcd(unsigned long a, unsigned long b)
> +{
> + unsigned long r;
> + if (a < b) {
> + r = a;
> + a = b;
> + b = r;
> + }
> + while ((r = a % b) != 0) {
> + a = b;
> + b = r;
> + }
> + return b;
> +}

a) the name's a bit sucky. Is there some convention for this name?

b) It looks too large to be inlined. lib/gdc.c?

b) there's an implementation of gcd() in
net/netfilter/ipvs/ip_vs_wrr.c. I expect that this patch broke the
build.