diff options
author | Hagen Paul Pfeifer <hagen@jauu.net> | 2010-10-26 17:22:21 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-10-26 19:52:12 -0400 |
commit | f27c85c56b32c42bcc54a43189c1e00fdceb23ec (patch) | |
tree | a3d8bd30d840082ea2709f47da5dca940aab0884 /include | |
parent | c5c6dd4e2dce3cb4d705d97183bc42b4e33e2606 (diff) |
kernel.h: add {min,max}3 macros
Introduce two additional min/max macros to compare three operands. This
will save some cycles as well as some bytes on the stack and last but not
least more pleasing as macro nesting.
[akpm@linux-foundation.org: fix warnings]
Signed-off-by: Hagen Paul Pfeifer <hagen@jauu.net>
Cc: Joe Perches <joe@perches.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Hartley Sweeten <hsweeten@visionengravers.com>
Cc: Russell King <linux@arm.linux.org.uk>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Herbert Xu <herbert@gondor.apana.org.au>
Cc: Roland Dreier <rolandd@cisco.com>
Cc: Sean Hefty <sean.hefty@intel.com>
Cc: Pekka Enberg <penberg@cs.helsinki.fi>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/kernel.h | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/include/linux/kernel.h b/include/linux/kernel.h index edef168a0406..8e786a27cfe6 100644 --- a/include/linux/kernel.h +++ b/include/linux/kernel.h | |||
@@ -651,6 +651,24 @@ static inline void ftrace_dump(enum ftrace_dump_mode oops_dump_mode) { } | |||
651 | (void) (&_max1 == &_max2); \ | 651 | (void) (&_max1 == &_max2); \ |
652 | _max1 > _max2 ? _max1 : _max2; }) | 652 | _max1 > _max2 ? _max1 : _max2; }) |
653 | 653 | ||
654 | #define min3(x, y, z) ({ \ | ||
655 | typeof(x) _min1 = (x); \ | ||
656 | typeof(y) _min2 = (y); \ | ||
657 | typeof(z) _min3 = (z); \ | ||
658 | (void) (&_min1 == &_min2); \ | ||
659 | (void) (&_min1 == &_min3); \ | ||
660 | _min1 < _min2 ? (_min1 < _min3 ? _min1 : _min3) : \ | ||
661 | (_min2 < _min3 ? _min2 : _min3); }) | ||
662 | |||
663 | #define max3(x, y, z) ({ \ | ||
664 | typeof(x) _max1 = (x); \ | ||
665 | typeof(y) _max2 = (y); \ | ||
666 | typeof(z) _max3 = (z); \ | ||
667 | (void) (&_max1 == &_max2); \ | ||
668 | (void) (&_max1 == &_max3); \ | ||
669 | _max1 > _max2 ? (_max1 > _max3 ? _max1 : _max3) : \ | ||
670 | (_max2 > _max3 ? _max2 : _max3); }) | ||
671 | |||
654 | /** | 672 | /** |
655 | * min_not_zero - return the minimum that is _not_ zero, unless both are zero | 673 | * min_not_zero - return the minimum that is _not_ zero, unless both are zero |
656 | * @x: value1 | 674 | * @x: value1 |