mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
rangeset: introduce rangeset_subtract
Introduce rangeset_subtract() to remove regions in r2 from r1. Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com> Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
This commit is contained in:
1 parent
3ef9211896
commit
31703c5d7a
2 files changed
+15
No files matched your search
@@ -397,6 +397,18 @@ int rangeset_merge(struct rangeset *r1, struct rangeset *r2)
|
||||
return rangeset_report_ranges(r2, 0, ~0UL, merge, r1);
|
||||
}
|
||||
|
||||
static int cf_check subtract(unsigned long s, unsigned long e, void *data)
|
||||
{
|
||||
struct rangeset *r = data;
|
||||
|
||||
return rangeset_remove_range(r, s, e);
|
||||
}
|
||||
|
||||
int rangeset_subtract(struct rangeset *r1, struct rangeset *r2)
|
||||
{
|
||||
return rangeset_report_ranges(r2, 0, ~0UL, subtract, r1);
|
||||
}
|
||||
|
||||
int rangeset_add_singleton(
|
||||
struct rangeset *r, unsigned long s)
|
||||
{
|
||||
|
||||
@@ -85,6 +85,9 @@ int rangeset_consume_ranges(struct rangeset *r,
|
||||
/* Merge rangeset r2 into rangeset r1. */
|
||||
int __must_check rangeset_merge(struct rangeset *r1, struct rangeset *r2);
|
||||
|
||||
/* Subtract rangeset r2 from rangeset r1. */
|
||||
int __must_check rangeset_subtract(struct rangeset *r1, struct rangeset *r2);
|
||||
|
||||
/* Add/remove/query a single number. */
|
||||
int __must_check rangeset_add_singleton(
|
||||
struct rangeset *r, unsigned long s);
|
||||
|
||||