Lines Matching defs:chunk

255 		out.Print("slab memory manager alloc meta chunk: %#" B_PRIxADDR,
276 out.Print("slab memory manager free meta chunk: %#" B_PRIxADDR,
287 AllocateChunk(size_t chunkSize, MetaChunk* metaChunk, Chunk* chunk)
292 fChunk(chunk - metaChunk->chunks)
299 out.Print("slab memory manager alloc chunk: size: %" B_PRIuSIZE
300 " -> meta chunk: %#" B_PRIxADDR ", chunk: %" B_PRIu32, fChunkSize,
314 Chunk* chunk)
320 fChunk(chunk - metaChunk->chunks)
328 ", count %" B_PRIu32 " -> meta chunk: %#" B_PRIxADDR ", chunk: %"
342 FreeChunk(MetaChunk* metaChunk, Chunk* chunk)
346 fChunk(chunk - metaChunk->chunks)
353 out.Print("slab memory manager free chunk: meta chunk: %#" B_PRIxADDR
354 ", chunk: %" B_PRIu32, fMetaChunk, fChunk);
505 "Dump information on a given slab meta chunk",
506 "<meta chunk>\n"
507 "Dump information on a given slab meta chunk specified by its base "
536 // allocate a chunk
538 Chunk* chunk;
539 status_t error = _AllocateChunks(chunkSize, 1, flags, metaChunk, chunk);
543 // map the chunk
545 addr_t chunkAddress = _ChunkAddress(metaChunk, chunk);
551 // something failed -- free the chunk
552 _FreeChunk(area, metaChunk, chunk, chunkAddress, true, flags);
556 chunk->reference = (addr_t)cache;
559 TRACE("MemoryManager::Allocate() done: %p (meta chunk: %d, chunk %d)\n",
561 int(chunk - metaChunk->chunks));
573 // get the area and the meta chunk
582 // get the chunk
584 Chunk* chunk = &metaChunk->chunks[chunkIndex];
586 ASSERT(chunk->next != NULL);
587 ASSERT(chunk->next < metaChunk->chunks
588 || chunk->next
593 _FreeChunk(area, metaChunk, chunk, (addr_t)pages, false, flags);
615 // Requested size greater than a large chunk or an aligned allocation.
644 // determine chunk size (small or medium)
657 Chunk* chunk;
659 chunk);
665 addr_t chunkAddress = _ChunkAddress(metaChunk, chunk);
673 _FreeChunk(area, metaChunk, chunk + i, chunkAddress, true, flags);
677 chunk->reference = (addr_t)chunkAddress + size - 1;
685 TRACE("MemoryManager::AllocateRaw() done: %p (meta chunk: %d, chunk %d)\n",
687 int(chunk - metaChunk->chunks));
730 // get the chunk
734 Chunk* chunk = &metaChunk->chunks[chunkIndex];
736 addr_t reference = chunk->reference;
740 // Seems we have a raw chunk allocation.
741 ASSERT((addr_t)pages == _ChunkAddress(metaChunk, chunk));
754 _FreeChunk(area, metaChunk, chunk + i, (addr_t)pages, true, flags);
795 // get the chunk
826 // get the chunk
884 Chunk* chunk = metaChunk->chunks + k;
887 if (_IsChunkFree(metaChunk, chunk))
890 addr_t reference = chunk->reference;
894 addr_t chunkAddress = _ChunkAddress(metaChunk, chunk);
925 // get the chunk
932 Chunk* chunk = &metaChunk->chunks[chunkIndex];
934 addr_t reference = chunk->reference;
952 panic("MemoryManager::_AllocateChunks(): Unsupported chunk size: %"
1013 // Try again to get a meta chunk. Something might have been freed in the
1036 // Iterate through the partial meta chunk list and try to find a free
1048 // try to get a free meta chunk
1073 ", area: %p, meta chunk: %" B_PRIdSSIZE "\n", remainingChunks,
1076 Chunk* chunk = *chunkPointer;
1077 if (chunk >= firstChunk && chunk <= lastChunk) {
1078 *chunkPointer = chunk->next;
1079 chunk->reference = 1;
1082 chunkPointer = &chunk->next;
1088 // meta chunk is full now -- remove it from its list
1114 // no partial meta chunk -- maybe there's a free one
1134 // allocate the chunk
1136 // meta chunk is full now -- remove it from its list
1166 MemoryManager::_FreeChunk(Area* area, MetaChunk* metaChunk, Chunk* chunk,
1169 // unmap the chunk
1176 T(FreeChunk(metaChunk, chunk));
1178 _push(metaChunk->freeChunks, chunk);
1180 uint32 chunkIndex = chunk - metaChunk->chunks;
1182 // free the meta chunk, if it is unused now
1188 // remove from partial meta chunk list
1210 // the meta chunk was full before -- add it back to its partial chunk
1220 // extend the free range, if the chunk adjoins
1253 // the first chunk is shorter
1366 // meta chunk. They will be set in _PrepareMetaChunk().
1450 // reserve memory for the chunk
1568 // meta chunk is free -- unmap it completely
1579 for (Chunk* chunk = metaChunk->freeChunks; chunk != NULL;
1580 chunk = chunk->next) {
1581 _UnmapChunk(area->vmArea, _ChunkAddress(metaChunk, chunk),
1585 // The first meta chunk might have space before its first chunk.
1627 const Chunk* chunk)
1631 if (freeChunk == chunk)
1648 panic("invalid meta chunk %p!", metaChunk);
1661 panic("meta chunk %p has invalid chunk size: %" B_PRIuSIZE,
1667 panic("meta chunk %p has invalid total size: %" B_PRIuSIZE,
1677 panic("meta chunk %p has invalid base address: %" B_PRIxADDR, metaChunk,
1683 panic("meta chunk %p has invalid chunk count: %u", metaChunk,
1689 panic("meta chunk %p has invalid unused chunk count: %u", metaChunk,
1695 panic("meta chunk %p has invalid first free chunk: %u", metaChunk,
1701 panic("meta chunk %p has invalid last free chunk: %u", metaChunk,
1708 for (Chunk* chunk = metaChunk->freeChunks; chunk != NULL;
1709 chunk = chunk->next) {
1710 if ((addr_t)chunk % sizeof(Chunk) != 0 || chunk < metaChunk->chunks
1711 || chunk >= metaChunk->chunks + metaChunk->chunkCount) {
1712 panic("meta chunk %p has invalid element in free list, chunk: %p",
1713 metaChunk, chunk);
1718 panic("meta chunk %p has cyclic free list", metaChunk);
1724 panic("meta chunk %p has mismatching free/used chunk counts: total: "
1738 panic("meta chunk %p has used chunks that appear free: total: "
1748 panic("meta chunk %p has used chunk in free range, chunk: %p (%"
1763 kprintf("%-*s meta chunk chunk %-*s size (KB)\n",
1775 Chunk* chunk = metaChunk->chunks + k;
1778 if (_IsChunkFree(metaChunk, chunk))
1781 addr_t reference = chunk->reference;
1785 addr_t chunkAddress = _ChunkAddress(metaChunk, chunk);
1807 kprintf("chunk base cache object size cache name\n");
1809 kprintf("chunk base\n");
1835 kprintf("%5d %p --- %6s meta chunk", metaChunkIndex,
1848 Chunk* chunk = metaChunk->chunks + i;
1851 if (_IsChunkFree(metaChunk, chunk)) {
1852 if (!_IsChunkInFreeList(metaChunk, chunk)) {
1854 "list!\n", i, (void*)_ChunkAddress(metaChunk, chunk));
1860 addr_t reference = chunk->reference;
1864 (void*)_ChunkAddress(metaChunk, chunk), cache,
1869 (void*)_ChunkAddress(metaChunk, chunk), (void*)reference);
1988 // sum up the free/used counts for the chunk sizes