diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2010-09-20 18:50:06 +0100 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2010-09-20 18:50:06 +0100 |
commit | 94187eb55b3334899a3b124041254e48f920ac6e (patch) | |
tree | 4e3ec45b681e02aac32f3b6b2ef1d5ad5db44284 /xen/common/rangeset.c | |
parent | 6d6b9b99aa0b6df81ffd8ae7e6d99e0aca8aa645 (diff) | |
download | xen-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.c | 16 |
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) |