Skip to content

Commit

Permalink
lib: add lib/gcd.c
Browse files Browse the repository at this point in the history
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.

[[email protected]: use swap() (pointed out by Joe)]
[[email protected]: just add gcd.o to obj-y, remove Kconfig changes]
Signed-off-by: Florian Fainelli <[email protected]>
Cc: Sergei Shtylyov <[email protected]>
Cc: Takashi Iwai <[email protected]>
Cc: Simon Horman <[email protected]>
Cc: Julius Volz <[email protected]>
Cc: David S. Miller <[email protected]>
Cc: Patrick McHardy <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
ffainelli authored and torvalds committed Jun 18, 2009
1 parent eae9d2b commit d282922
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 1 deletion.
8 changes: 8 additions & 0 deletions include/linux/gcd.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#ifndef _GCD_H
#define _GCD_H

#include <linux/compiler.h>

unsigned long gcd(unsigned long a, unsigned long b) __attribute_const__;

#endif /* _GCD_H */
2 changes: 1 addition & 1 deletion lib/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ lib-y += kobject.o kref.o klist.o

obj-y += bcd.o div64.o sort.o parser.o halfmd4.o debug_locks.o random32.o \
bust_spinlocks.o hexdump.o kasprintf.o bitmap.o scatterlist.o \
string_helpers.o
string_helpers.o gcd.o

ifeq ($(CONFIG_DEBUG_KOBJECT),y)
CFLAGS_kobject.o += -DDEBUG
Expand Down
18 changes: 18 additions & 0 deletions lib/gcd.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#include <linux/kernel.h>
#include <linux/gcd.h>
#include <linux/module.h>

/* Greatest common divisor */
unsigned long gcd(unsigned long a, unsigned long b)
{
unsigned long r;

if (a < b)
swap(a, b);
while ((r = a % b) != 0) {
a = b;
b = r;
}
return b;
}
EXPORT_SYMBOL_GPL(gcd);

0 comments on commit d282922

Please sign in to comment.