From: Keir Fraser Date: Mon, 20 Sep 2010 17:50:06 +0000 (+0100) Subject: rangesets: add function to query for overlaps X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~11461 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=94187eb55b3334899a3b124041254e48f920ac6e;p=xen.git rangesets: add function to query for overlaps Signed-off-by: Jan Beulich --- 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) diff --git a/xen/include/xen/rangeset.h b/xen/include/xen/rangeset.h index 4219c079ef..1e16a6b319 100644 --- a/xen/include/xen/rangeset.h +++ b/xen/include/xen/rangeset.h @@ -53,6 +53,8 @@ int __must_check rangeset_remove_range( struct rangeset *r, unsigned long s, unsigned long e); int __must_check rangeset_contains_range( struct rangeset *r, unsigned long s, unsigned long e); +int __must_check rangeset_overlaps_range( + struct rangeset *r, unsigned long s, unsigned long e); int rangeset_report_ranges( struct rangeset *r, unsigned long s, unsigned long e, int (*cb)(unsigned long s, unsigned long e, void *), void *ctxt);