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:
Stewart Hildebrand authored and Stefano Stabellini committed 2025-05-08 16:44:35 -07:00
1 parent 3ef9211896
commit 31703c5d7a
2 files changed
+15

No files matched your search

+12
View File
@@ -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)
{
+3
View File
@@ -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);
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.