[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH RFC v1 43/74] xen: introduce rangeset_reserve_hole
>>> On 04.01.18 at 14:05, <wei.liu2@xxxxxxxxxx> wrote: > Reserve a hole in a rangeset. At the end of this operation the new range isn't distinguishable from a range added by rangeset_add_range(). Hence I don't think the term "hole" is really appropriate. > --- a/xen/common/rangeset.c > +++ b/xen/common/rangeset.c > @@ -298,6 +298,57 @@ int rangeset_report_ranges( > return rc; > } > > +int rangeset_reserve_hole(struct rangeset *r, unsigned long size, > + unsigned long *s) Therefore, how about "rangeset_claim_range()" or "rangeset_add_dyn_range()"? > +{ > + struct range *prev, *next; > + > + *s = 0; I think it would be better to use a local variable here, and set *s only on the success path. > + write_lock(&r->lock); > + > + for ( prev = NULL, next = first_range(r); > + next; > + prev = next, next = next_range(r, next) ) > + { > + if ( (next->s - *s) >= size ) > + goto insert; > + > + if ( next->e == ~0UL ) > + goto out; > + > + *s = next->e + 1; > + } > + > + if ( (~0UL - *s) + 1 >= size ) > + goto insert; > + > + out: > + write_unlock(&r->lock); > + return -ENOSPC; > + > + insert: > + if ( !prev ) unlikely()? > --- a/xen/include/xen/rangeset.h > +++ b/xen/include/xen/rangeset.h > @@ -76,6 +76,10 @@ int __must_check rangeset_remove_singleton( > bool_t __must_check rangeset_contains_singleton( > struct rangeset *r, unsigned long s); > > +/* Reserve a region of the specified size. */ > +int __must_check rangeset_reserve_hole(struct rangeset *r, unsigned long > size, > + unsigned long *s); I think this would better be placed closer to rangeset_add_range(). Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |