The Linux Kernel Mailing List
 help / color / mirror / Atom feed
* [PATCH 1/2] [PATCH 1/2] Introduce new macros min_lt and max_lt for comparing with larger type
@ 2016-03-11  6:21 dyoung
  2016-03-11  7:19 ` Jianyu Zhan
  0 siblings, 1 reply; 3+ messages in thread
From: dyoung @ 2016-03-11  6:21 UTC (permalink / raw)
  To: akpm, linux-kernel, d.hatayama, bhe, vgoyal; +Cc: dyoung, kexec

[-- Attachment #1: 0001-Introduce-new-macros-min_lt-and-max_lt-for-comparing.patch --]
[-- Type: text/plain, Size: 1170 bytes --]

A useful use case for min_t and max_t is comparing two values with larger
type. For example comparing an u64 and an u32, usually we do not want to
truncate the u64, so we need use min_t or max_t with u64.

To simplify the usage introducing two more macros min_lt and max_lt,
'lt' means larger type.

Signed-off-by: Dave Young <dyoung@redhat.com>
---
 include/linux/kernel.h |   13 +++++++++++++
 1 file changed, 13 insertions(+)

--- linux.orig/include/linux/kernel.h
+++ linux/include/linux/kernel.h
@@ -798,6 +798,19 @@ static inline void ftrace_dump(enum ftra
 	type __max2 = (y);			\
 	__max1 > __max2 ? __max1: __max2; })
 
+/*
+ * use type of larger size in min_lt and max_lt
+ */
+#define min_lt(x, y) ({			\
+	int sx = sizeof(typeof(x));             \
+	int sy = sizeof(typeof(y));             \
+	sx > sy ? min_t(typeof(x), x, y) : min_t(typeof(y), x, y); })
+
+#define max_lt(x, y) ({			\
+	int sx = sizeof(typeof(x));             \
+	int sy = sizeof(typeof(y));             \
+	sx > sy ? max_t(typeof(x), x, y) : max_t(typeof(y), x, y); })
+
 /**
  * clamp_t - return a value clamped to a given range using a given type
  * @type: the type of variable to use

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2016-03-11  7:55 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-03-11  6:21 [PATCH 1/2] [PATCH 1/2] Introduce new macros min_lt and max_lt for comparing with larger type dyoung
2016-03-11  7:19 ` Jianyu Zhan
2016-03-11  7:55   ` Dave Young

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox