diff options
| -rw-r--r-- | block/blk-settings.c | 11 | ||||
| -rw-r--r-- | include/linux/lcm.h | 8 | ||||
| -rw-r--r-- | lib/Makefile | 2 | ||||
| -rw-r--r-- | lib/lcm.c | 15 | 
4 files changed, 25 insertions, 11 deletions
diff --git a/block/blk-settings.c b/block/blk-settings.c index 31e7a9375c1..4c4700dca56 100644 --- a/block/blk-settings.c +++ b/block/blk-settings.c @@ -8,6 +8,7 @@  #include <linux/blkdev.h>  #include <linux/bootmem.h>	/* for max_pfn/max_low_pfn */  #include <linux/gcd.h> +#include <linux/lcm.h>  #include <linux/jiffies.h>  #include "blk.h" @@ -461,16 +462,6 @@ void blk_queue_stack_limits(struct request_queue *t, struct request_queue *b)  }  EXPORT_SYMBOL(blk_queue_stack_limits); -static unsigned int lcm(unsigned int a, unsigned int b) -{ -	if (a && b) -		return (a * b) / gcd(a, b); -	else if (b) -		return b; - -	return a; -} -  /**   * blk_stack_limits - adjust queue_limits for stacked devices   * @t:	the stacking driver limits (top device) diff --git a/include/linux/lcm.h b/include/linux/lcm.h new file mode 100644 index 00000000000..7bf01d779b4 --- /dev/null +++ b/include/linux/lcm.h @@ -0,0 +1,8 @@ +#ifndef _LCM_H +#define _LCM_H + +#include <linux/compiler.h> + +unsigned long lcm(unsigned long a, unsigned long b) __attribute_const__; + +#endif /* _LCM_H */ diff --git a/lib/Makefile b/lib/Makefile index 2e152aed719..0d4015205c6 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -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 gcd.o list_sort.o +	 string_helpers.o gcd.o lcm.o list_sort.o  ifeq ($(CONFIG_DEBUG_KOBJECT),y)  CFLAGS_kobject.o += -DDEBUG diff --git a/lib/lcm.c b/lib/lcm.c new file mode 100644 index 00000000000..157cd88a6ff --- /dev/null +++ b/lib/lcm.c @@ -0,0 +1,15 @@ +#include <linux/kernel.h> +#include <linux/gcd.h> +#include <linux/module.h> + +/* Lowest common multiple */ +unsigned long lcm(unsigned long a, unsigned long b) +{ +	if (a && b) +		return (a * b) / gcd(a, b); +	else if (b) +		return b; + +	return a; +} +EXPORT_SYMBOL_GPL(lcm);  |