Home | History | Annotate | Download | only in quipper

Lines Matching defs:range

30     LOG(ERROR) << "Must allocate a nonzero-length address range.";
42 MappedRange range;
43 range.real_addr = real_addr;
44 range.size = size;
45 range.id = id;
46 range.offset_base = offset_base;
49 // does not result in one range being completely covered by another.
51 // First determine the range of mappings that could overlap with the new
54 // lower_bound returns the first range with starting addr >= |real_addr|. The
55 // preceding range could also possibly overlap with the new range.
58 // lower_bound returns the first range with starting addr beyond the end of
59 // the new mapping range.
66 if (!iter->Intersects(range)) continue;
69 if (old_range_iter == mappings_.end() && iter->Covers(range) &&
70 iter->size > range.size) {
81 // Otherwise check for this range being covered by another range. If that
82 // happens, split or reduce the existing range to make room.
88 uint64_t gap_before = range.real_addr - old_range.real_addr;
90 (old_range.real_addr + old_range.size) - (range.real_addr + range.size);
93 // or end, it will require the end of the old mapping range to be moved,
96 if ((gap_before && GetAlignedOffset(range.real_addr)) ||
97 (gap_after && GetAlignedOffset(range.real_addr + range.size))) {
106 LOG(ERROR) << "Could not map old range from " << std::hex
113 if (!MapWithID(range.real_addr, range.size, id, offset_base, false)) {
114 LOG(ERROR) << "Could not map new range at " << std::hex << range.real_addr
115 << " to " << range.real_addr + range.size << " over old range";
120 if (!MapWithID(range.real_addr + range.size, gap_after, old_range.id,
121 old_range.offset_base + gap_before + range.size, false)) {
122 LOG(ERROR) << "Could not map old range from " << std::hex
132 // Now search for a location for the new range. It should be in the first
136 page_alignment_ ? GetAlignedOffset(range.real_addr) : 0;
140 range.mapped_addr = page_offset;
141 range.unmapped_space_after = UINT64_MAX - range.size - page_offset;
142 mappings_.push_back(range);
144 std::make_pair(range.real_addr, mappings_.begin()));
148 // If there is space before the first mapped range in quipper space, use it.
149 if (mappings_.begin()->mapped_addr >= range.size + page_offset) {
150 range.mapped_addr = page_offset;
151 range.unmapped_space_after =
152 mappings_.begin()->mapped_addr - range.size - page_offset;
153 mappings_.push_front(range);
155 real_addr_to_mapped_range_.insert(std::make_pair(range.real_addr, iter));
175 uint64_t mapping_offset = GetAlignedOffset(range.real_addr);
177 next_page_boundary + mapping_offset + range.size;
185 range.mapped_addr = next_page_boundary + mapping_offset;
186 range.unmapped_space_after =
189 range.mapped_addr - end_of_existing_mapping;
191 if (existing_mapping.unmapped_space_after < range.size) continue;
192 // Insert the new mapping range immediately after the existing one.
193 range.mapped_addr = existing_mapping.mapped_addr + existing_mapping.size;
194 range.unmapped_space_after =
195 existing_mapping.unmapped_space_after - range.size;
199 mappings_.insert(++iter, range);
201 real_addr_to_mapped_range_.insert(std::make_pair(range.real_addr, iter));
262 const MappedRange& range = *mapping_iter;
265 range.size + range.unmapped_space_after;
273 // Find the first range that has a higher real address than the given one.