Lines Matching refs:size

53 /*!	Verifies that an area with the given aligned base and size fits into
57 \param size The size of the area.
61 is_valid_spot(addr_t base, addr_t alignedBase, addr_t size, addr_t limit)
63 return (alignedBase >= base && alignedBase + (size - 1) > alignedBase
64 && alignedBase + (size - 1) <= limit);
71 VMKernelAddressSpace::VMKernelAddressSpace(team_id id, addr_t base, size_t size)
73 VMAddressSpace(id, base, size, "kernel address space"),
100 size_t size = fEndAddress - fBase + 1;
101 fFreeListCount = ld(size) - PAGE_SHIFT + 1;
106 Range* range = new(fRangesObjectCache, 0) Range(fBase, size,
192 VMKernelAddressSpace::InsertArea(VMArea* _area, size_t size,
198 addressRestrictions->address_specification, size, _area, _area->name);
203 status_t error = _AllocateRange(addressRestrictions, size,
213 area->SetSize(range->size);
246 if (newSize <= range->size)
260 return newSize - range->size <= nextRange->size;
274 if (newSize == range->size)
279 if (newSize < range->size) {
282 _FreeListRemoveRange(nextRange, nextRange->size);
283 nextRange->size += range->size - newSize;
285 _FreeListInsertRange(nextRange, nextRange->size);
290 range->base + newSize, range->size - newSize,
304 size_t sizeDiff = newSize - range->size;
305 if (sizeDiff > nextRange->size)
308 if (sizeDiff == nextRange->size) {
315 _FreeListRemoveRange(nextRange, nextRange->size);
316 nextRange->size -= sizeDiff;
319 _FreeListInsertRange(nextRange, nextRange->size);
323 range->size = newSize;
342 if (newSize == range->size)
345 if (newSize > range->size)
350 size_t sizeDiff = range->size - newSize;
353 _FreeListRemoveRange(previousRange, previousRange->size);
354 previousRange->size += sizeDiff;
355 _FreeListInsertRange(previousRange, previousRange->size);
357 range->size = newSize;
366 range->size = newSize;
371 area->SetSize(range->size);
388 VMKernelAddressSpace::ReserveAddressRange(size_t size,
394 addressRestrictions->address_specification, size, flags);
402 status_t error = _AllocateRange(addressRestrictions, size, false,
421 VMKernelAddressSpace::UnreserveAddressRange(addr_t address, size_t size,
425 B_PRIxSIZE ")\n", address, size);
433 addr_t endAddress = address + (size - 1);
435 while (range != NULL && range->base + (range->size - 1) <= endAddress) {
496 kprintf("size = %#" B_PRIxSIZE " ", area->Size());
504 " reserved_base = %#" B_PRIxADDR " size = %#"
506 range->reserved.base, range->size, range->reserved.flags);
510 kprintf(" free: base_addr = %#" B_PRIxADDR " size = %#"
511 B_PRIxSIZE "\n", range->base, range->size);
519 VMKernelAddressSpace::_FreeListInsertRange(Range* range, size_t size)
523 range->size, range->type, size, ld(size) - PAGE_SHIFT);
525 fFreeLists[ld(size) - PAGE_SHIFT].Add(range);
530 VMKernelAddressSpace::_FreeListRemoveRange(Range* range, size_t size)
534 range->size, range->type, size, ld(size) - PAGE_SHIFT);
536 fFreeLists[ld(size) - PAGE_SHIFT].Remove(range);
544 B_PRIxSIZE ", %d))\n", range, range->base, range->size, range->type);
558 _FreeListInsertRange(range, range->size);
566 B_PRIxSIZE ", %d))\n", range, range->base, range->size, range->type);
575 _FreeListRemoveRange(range, range->size);
582 size_t size, bool allowReservedRange, uint32 allocationFlags,
585 TRACE(" VMKernelAddressSpace::_AllocateRange(address: %p, size: %#"
587 addressRestrictions->address, size,
590 // prepare size, alignment and the base address for the range search
592 size = ROUNDUP(size, B_PAGE_SIZE);
609 // align the memory to the next power of two of the size
610 while (alignment < size)
625 Range* range = _FindFreeRange(address, size, alignment,
634 B_PRIxADDR ", %#" B_PRIxSIZE ", %d)\n", range, range->base, range->size,
639 size_t rangeSize = range->size;
643 if (range->size > size) {
646 Range(address + size, range->size - size, range);
650 range->size = size;
653 } else if (address + size == range->base + range->size) {
656 range->base, range->size - size, range);
661 range->size = size;
670 address + size, range->size - size - leftOverRange1->size, range);
678 range->size = size;
690 B_PRIxSIZE ")\n", range, range->base, range->size);
698 VMKernelAddressSpace::_FindFreeRange(addr_t start, size_t size,
703 ", size: %#" B_PRIxSIZE ", alignment: %#" B_PRIxSIZE ", addressSpec: %#"
704 B_PRIx32 ", reserved allowed: %d)\n", start, size, alignment,
716 if (is_valid_spot(start, alignedBase, size,
717 range->base + (range->size - 1))) {
737 // guaranteed to contain the size. Finding a free range is O(1),
739 int freeListIndex = ld((size * 2 - 1) >> PAGE_SHIFT);
749 if (is_valid_spot(start, alignedBase, size,
750 range->base + (range->size - 1))) {
767 if (is_valid_spot(start, alignedBase, size,
768 range->base + (range->size - 1))) {
774 range->base + (range->size - size), alignment);
792 || range->base + (range->size - 1) < start + (size - 1)) {
819 B_PRIxSIZE ", %d))\n", range, range->base, range->size, range->type);
829 _FreeListRemoveRange(previousRange, previousRange->size);
832 previousRange->size += range->size + nextRange->size;
835 _FreeListInsertRange(previousRange, previousRange->size);
838 _FreeListRemoveRange(previousRange, previousRange->size);
840 previousRange->size += range->size;
842 _FreeListInsertRange(previousRange, previousRange->size);
848 range->size += nextRange->size;
854 _FreeListInsertRange(range, range->size);
893 if (range->size == 0) {
898 if (range->size % B_PAGE_SIZE != 0) {
901 range->base, range->size);
904 if (range->size > spaceSize - (range->base - fBase)) {
907 B_PRIxADDR, range->base, range->size, fEndAddress);
917 previousRange->base, previousRange->size, range,
918 range->base, range->size);
923 nextBase = range->base + range->size;
945 "free list %d", range, range->base, range->size,
952 "free list %d", range, range->base, range->size,
956 if (ld(range->size) - PAGE_SHIFT != i) {
959 "wrong free list %d", range, range->base, range->size,