diff options
author | Florian Fainelli <florian@openwrt.org> | 2009-06-17 19:28:38 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-06-18 16:04:05 -0400 |
commit | d2829224619866daf336141b71550e223a198838 (patch) | |
tree | 59e12165ac9dea56a04f3b46ec098f4292f67481 /lib/gcd.c | |
parent | eae9d2ba0cfc27a2ad9765f23efb98fb80d80234 (diff) |
lib: add lib/gcd.c
This patch adds lib/gcd.c which contains a greatest common divider
implementation taken from sound/core/pcm_timer.c
Several usages of this new library function will be sent to subsystem
maintainers.
[akpm@linux-foundation.org: use swap() (pointed out by Joe)]
[akpm@linux-foundation.org: just add gcd.o to obj-y, remove Kconfig changes]
Signed-off-by: Florian Fainelli <florian@openwrt.org>
Cc: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Cc: Takashi Iwai <tiwai@suse.de>
Cc: Simon Horman <horms@verge.net.au>
Cc: Julius Volz <juliusv@google.com>
Cc: David S. Miller <davem@davemloft.net>
Cc: Patrick McHardy <kaber@trash.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'lib/gcd.c')
-rw-r--r-- | lib/gcd.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/lib/gcd.c b/lib/gcd.c new file mode 100644 index 000000000000..f879033d9822 --- /dev/null +++ b/lib/gcd.c | |||
@@ -0,0 +1,18 @@ | |||
1 | #include <linux/kernel.h> | ||
2 | #include <linux/gcd.h> | ||
3 | #include <linux/module.h> | ||
4 | |||
5 | /* Greatest common divisor */ | ||
6 | unsigned long gcd(unsigned long a, unsigned long b) | ||
7 | { | ||
8 | unsigned long r; | ||
9 | |||
10 | if (a < b) | ||
11 | swap(a, b); | ||
12 | while ((r = a % b) != 0) { | ||
13 | a = b; | ||
14 | b = r; | ||
15 | } | ||
16 | return b; | ||
17 | } | ||
18 | EXPORT_SYMBOL_GPL(gcd); | ||