aboutsummaryrefslogtreecommitdiffstats
path: root/xen/common/rangeset.c
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2010-09-20 18:50:06 +0100
committerKeir Fraser <keir.fraser@citrix.com>2010-09-20 18:50:06 +0100
commit94187eb55b3334899a3b124041254e48f920ac6e (patch)
tree4e3ec45b681e02aac32f3b6b2ef1d5ad5db44284 /xen/common/rangeset.c
parent6d6b9b99aa0b6df81ffd8ae7e6d99e0aca8aa645 (diff)
downloadxen-94187eb55b3334899a3b124041254e48f920ac6e.tar.gz
xen-94187eb55b3334899a3b124041254e48f920ac6e.tar.bz2
xen-94187eb55b3334899a3b124041254e48f920ac6e.zip
rangesets: add function to query for overlaps
Signed-off-by: Jan Beulich <jbeulich@novell.com>
Diffstat (limited to 'xen/common/rangeset.c')
-rw-r--r--xen/common/rangeset.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/xen/common/rangeset.c b/xen/common/rangeset.c
index 78d0647acc..bb9523fda6 100644
--- a/xen/common/rangeset.c
+++ b/xen/common/rangeset.c
@@ -251,6 +251,22 @@ int rangeset_contains_range(
return contains;
}
+int rangeset_overlaps_range(
+ struct rangeset *r, unsigned long s, unsigned long e)
+{
+ struct range *x;
+ int overlaps;
+
+ ASSERT(s <= e);
+
+ spin_lock(&r->lock);
+ x = find_range(r, e);
+ overlaps = (x && (s <= x->e));
+ spin_unlock(&r->lock);
+
+ return overlaps;
+}
+
int rangeset_report_ranges(
struct rangeset *r, unsigned long s, unsigned long e,
int (*cb)(unsigned long s, unsigned long e, void *), void *ctxt)