Lines Matching full:range
13 use crate::range_alloc::{DescriptorState, FreedRange, Range};
25 pub(super) ranges: KVec<Range<T>>,
31 /// Which index in `ranges` should we insert the new range at?
33 /// Inserting the new range at this index keeps `ranges` sorted.
35 /// Which offset should we insert the new range at?
65 for range in &self.ranges { in debug_print()
70 range.offset, in debug_print()
71 range.size, in debug_print()
72 range.state.pid(), in debug_print()
73 range.state.is_oneway(), in debug_print()
75 if let DescriptorState::Reserved(_) = range.state { in debug_print()
84 /// Find somewhere to put a new range.
89 /// Returns the index that the new range should have in `self.ranges` after insertion.
91 let after_last_range = self.ranges.last().map(Range::endpoint).unwrap_or(0); in find_empty_range()
94 // We can put the range at the end, so just do that. in find_empty_range()
101 for (i, range) in self.ranges.iter().enumerate() { in find_empty_range()
102 // Does it fit before the i'th range? in find_empty_range()
103 if size <= range.offset - end_of_prev { in find_empty_range()
109 end_of_prev = range.endpoint(); in find_empty_range()
138 let new_range = Range { in reserve_new()
174 for range in &self.ranges { in low_oneway_space()
175 if range.state.is_oneway() && range.state.pid() == calling_pid { in low_oneway_space()
176 total_alloc_size += range.size; in low_oneway_space()
188 .position(|range| range.offset == offset) in reservation_abort()
190 let range = &self.ranges[i]; in reservation_abort() localVariable
192 if let DescriptorState::Allocated(_) = range.state { in reservation_abort()
196 let size = range.size; in reservation_abort()
197 let offset = range.offset; in reservation_abort()
199 if range.state.is_oneway() { in reservation_abort()
203 // This computes the range of pages that are no longer used by *any* allocated range. The in reservation_abort()
213 if range.endpoint() % PAGE_SIZE != 0 { in reservation_abort()
214 let page_after = (range.endpoint() & PAGE_MASK) + PAGE_SIZE; in reservation_abort()
226 let range = self in reservation_commit() localVariable
229 .find(|range| range.offset == offset) in reservation_commit()
232 let DescriptorState::Reserved(reservation) = &range.state else { in reservation_commit()
236 range.state = DescriptorState::Allocated(reservation.clone().allocate(data.take())); in reservation_commit()
242 let range = self in reserve_existing() localVariable
245 .find(|range| range.offset == offset) in reserve_existing()
248 let DescriptorState::Allocated(allocation) = &mut range.state else { in reserve_existing()
254 range.state = DescriptorState::Reserved(allocation.reservation.clone()); in reserve_existing()
255 Ok((range.size, debug_id, data)) in reserve_existing()
259 for range in self.ranges.iter_mut() { in take_for_each()
260 if let DescriptorState::Allocated(allocation) = &mut range.state { in take_for_each()
262 range.offset, in take_for_each()
263 range.size, in take_for_each()
273 ranges: KVec<Range<T>>,