|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Minios-devel] [UNIKRAFT PATCH 1/5] include/essentials: Introduce range test macros
Introduce macros to test if:
- a value is part of a number range
- two ranges are overlapping
Signed-off-by: Simon Kuenzer <simon.kuenzer@xxxxxxxxx>
---
include/uk/essentials.h | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/include/uk/essentials.h b/include/uk/essentials.h
index d9b24fcb..f20245b4 100644
--- a/include/uk/essentials.h
+++ b/include/uk/essentials.h
@@ -195,6 +195,26 @@ extern "C" {
#define ALIGN_DOWN(v, a) ((v) & ~((a)-1))
#endif
+/**
+ * Tests if `val` is part of the range defined by `base` and `len`
+ */
+#define IN_RANGE(val, base, len) \
+ (((val) >= (base)) && ((val) < (base) + (len)))
+
+/**
+ * Tests if two ranges overlap
+ * This is the case when at least one of the following conditions is true:
+ * - The start of range 1 is within range 0
+ * - The end of range 1 is within range 0
+ * - The start of range 1 is smaller than the start of range 0 while
+ * the end of range 1 is bigger than the end of range 0
+ */
+#define RANGE_OVERLAP(base0, len0, base1, len1)
\
+ (IN_RANGE((base1), (base0), (len0)) \
+ || IN_RANGE((base1) + (len1), (base0), (len0)) \
+ || (((base1) <= (base0)) \
+ && (((base1) + (len1)) >= ((base0) + (len0)))))
+
#ifndef ARRAY_SIZE
#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
#endif
--
2.21.0
_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |