* Style cleanup, mostly 80 character limit per line.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30631 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Axel Dörfler
2009-05-05 10:05:11 +00:00
parent 28b6c8138b
commit 3873c5f3f2
+63 -40
View File
@@ -8,6 +8,7 @@
* Copyright 2001, Travis Geiselbrecht. All rights reserved. * Copyright 2001, Travis Geiselbrecht. All rights reserved.
* Distributed under the terms of the NewOS License. * Distributed under the terms of the NewOS License.
*/ */
#include <arch/debug.h> #include <arch/debug.h>
#include <debug.h> #include <debug.h>
#include <elf.h> #include <elf.h>
@@ -284,9 +285,9 @@ dump_page(heap_page *page)
for (addr_t *temp = page->free_list; temp != NULL; temp = (addr_t *)*temp) for (addr_t *temp = page->free_list; temp != NULL; temp = (addr_t *)*temp)
count++; count++;
dprintf("\t\tpage %p: bin_index: %u; free_count: %u; empty_index: %u; free_list %p (%lu entr%s)\n", dprintf("\t\tpage %p: bin_index: %u; free_count: %u; empty_index: %u; "
page, page->bin_index, page->free_count, page->empty_index, "free_list %p (%lu entr%s)\n", page, page->bin_index, page->free_count,
page->free_list, count, count == 1 ? "y" : "ies"); page->empty_index, page->free_list, count, count == 1 ? "y" : "ies");
} }
@@ -315,10 +316,10 @@ dump_allocator_areas(heap_allocator *heap)
{ {
heap_area *area = heap->all_areas; heap_area *area = heap->all_areas;
while (area) { while (area) {
dprintf("\tarea %p: area: %ld; base: 0x%08lx; size: %lu; page_count: %lu; free_pages: %p (%lu entr%s)\n", dprintf("\tarea %p: area: %ld; base: 0x%08lx; size: %lu; page_count: "
area, area->area, area->base, area->size, area->page_count, "%lu; free_pages: %p (%lu entr%s)\n", area, area->area, area->base,
area->free_pages, area->free_page_count, area->size, area->page_count, area->free_pages,
area->free_page_count == 1 ? "y" : "ies"); area->free_page_count, area->free_page_count == 1 ? "y" : "ies");
area = area->all_next; area = area->all_next;
} }
@@ -329,8 +330,9 @@ dump_allocator_areas(heap_allocator *heap)
static void static void
dump_allocator(heap_allocator *heap, bool areas, bool bins) dump_allocator(heap_allocator *heap, bool areas, bool bins)
{ {
dprintf("allocator %p: name: %s; page_size: %lu; bin_count: %lu; pages: %lu; free_pages: %lu; empty_areas: %lu\n", heap, dprintf("allocator %p: name: %s; page_size: %lu; bin_count: %lu; pages: "
heap->name, heap->page_size, heap->bin_count, heap->total_pages, "%lu; free_pages: %lu; empty_areas: %lu\n", heap, heap->name,
heap->page_size, heap->bin_count, heap->total_pages,
heap->total_free_pages, heap->empty_areas); heap->total_free_pages, heap->empty_areas);
if (areas) if (areas)
@@ -410,11 +412,14 @@ dump_allocations(int argc, char **argv)
if (page->bin_index < heap->bin_count) { if (page->bin_index < heap->bin_count) {
// page is used by a small allocation bin // page is used by a small allocation bin
uint32 elementCount = page->empty_index; uint32 elementCount = page->empty_index;
size_t elementSize = heap->bins[page->bin_index].element_size; size_t elementSize
for (uint32 j = 0; j < elementCount; j++, base += elementSize) { = heap->bins[page->bin_index].element_size;
for (uint32 j = 0; j < elementCount;
j++, base += elementSize) {
// walk the free list to see if this element is in use // walk the free list to see if this element is in use
bool elementInUse = true; bool elementInUse = true;
for (addr_t *temp = page->free_list; temp != NULL; temp = (addr_t *)*temp) { for (addr_t *temp = page->free_list; temp != NULL;
temp = (addr_t *)*temp) {
if ((addr_t)temp == base) { if ((addr_t)temp == base) {
elementInUse = false; elementInUse = false;
break; break;
@@ -447,8 +452,10 @@ dump_allocations(int argc, char **argv)
uint32 pageCount = 1; uint32 pageCount = 1;
while (i + pageCount < area->page_count while (i + pageCount < area->page_count
&& area->page_table[i + pageCount].in_use && area->page_table[i + pageCount].in_use
&& area->page_table[i + pageCount].bin_index == heap->bin_count && area->page_table[i + pageCount].bin_index
&& area->page_table[i + pageCount].allocation_id == page->allocation_id) == heap->bin_count
&& area->page_table[i + pageCount].allocation_id
== page->allocation_id)
pageCount++; pageCount++;
info = (heap_leak_check_info *)(base + pageCount info = (heap_leak_check_info *)(base + pageCount
@@ -786,16 +793,18 @@ heap_validate_heap(heap_allocator *heap)
if ((addr_t)&area->page_table[page->index] != (addr_t)page) if ((addr_t)&area->page_table[page->index] != (addr_t)page)
panic("used page index does not lead to target page\n"); panic("used page index does not lead to target page\n");
if (page->prev != lastPage) if (page->prev != lastPage) {
panic("used page entry has invalid prev link (%p vs %p bin %lu)\n", panic("used page entry has invalid prev link (%p vs %p bin "
page->prev, lastPage, i); "%lu)\n", page->prev, lastPage, i);
}
if (!page->in_use) if (!page->in_use)
panic("used page marked as not in use\n"); panic("used page marked as not in use\n");
if (page->bin_index != i) if (page->bin_index != i) {
panic("used page with bin index %u in page list of bin %lu\n", panic("used page with bin index %u in page list of bin %lu\n",
page->bin_index, i); page->bin_index, i);
}
if (page->free_count < lastFreeCount) if (page->free_count < lastFreeCount)
panic("ordering of bin page list broken\n"); panic("ordering of bin page list broken\n");
@@ -817,9 +826,10 @@ heap_validate_heap(heap_allocator *heap)
} }
uint32 slotCount = bin->max_free_count; uint32 slotCount = bin->max_free_count;
if (page->empty_index > slotCount) if (page->empty_index > slotCount) {
panic("empty index beyond slot count (%u with %lu slots)\n", panic("empty index beyond slot count (%u with %lu slots)\n",
page->empty_index, slotCount); page->empty_index, slotCount);
}
freeSlotsCount += (slotCount - page->empty_index); freeSlotsCount += (slotCount - page->empty_index);
if (freeSlotsCount > slotCount) if (freeSlotsCount > slotCount)
@@ -919,8 +929,9 @@ heap_add_area(heap_allocator *heap, area_id areaID, addr_t base, size_t size)
mutex_unlock(&heap->lock); mutex_unlock(&heap->lock);
dprintf("heap_add_area: area %ld added to %s heap %p - usable range 0x%08lx - 0x%08lx\n", dprintf("heap_add_area: area %ld added to %s heap %p - usable range 0x%08lx "
area->area, heap->name, heap, area->base, area->base + area->size); "- 0x%08lx\n", area->area, heap->name, heap, area->base,
area->base + area->size);
} }
@@ -970,8 +981,9 @@ heap_remove_area(heap_allocator *heap, heap_area *area, bool locked)
if (!locked) if (!locked)
mutex_unlock(&heap->lock); mutex_unlock(&heap->lock);
dprintf("heap_remove_area: area %ld with range 0x%08lx - 0x%08lx removed from %s heap %p\n", dprintf("heap_remove_area: area %ld with range 0x%08lx - 0x%08lx removed "
area->area, area->base, area->base + area->size, heap->name, heap); "from %s heap %p\n", area->area, area->base, area->base + area->size,
heap->name, heap);
return B_OK; return B_OK;
} }
@@ -1311,7 +1323,8 @@ heap_memalign(heap_allocator *heap, size_t alignment, size_t size)
void *address = heap_raw_alloc(heap, size, binIndex); void *address = heap_raw_alloc(heap, size, binIndex);
TRACE(("memalign(): asked to allocate %lu bytes, returning pointer %p\n", size, address)); TRACE(("memalign(): asked to allocate %lu bytes, returning pointer %p\n",
size, address));
#if KERNEL_HEAP_LEAK_CHECK #if KERNEL_HEAP_LEAK_CHECK
size -= sizeof(heap_leak_check_info); size -= sizeof(heap_leak_check_info);
@@ -1375,7 +1388,8 @@ heap_free(heap_allocator *heap, void *address)
heap_page *page = &area->page_table[((addr_t)address - area->base) heap_page *page = &area->page_table[((addr_t)address - area->base)
/ heap->page_size]; / heap->page_size];
TRACE(("free(): page %p: bin_index %d, free_count %d\n", page, page->bin_index, page->free_count)); TRACE(("free(): page %p: bin_index %d, free_count %d\n", page,
page->bin_index, page->free_count));
if (page->bin_index > heap->bin_count) { if (page->bin_index > heap->bin_count) {
panic("free(): page %p: invalid bin_index %d\n", page, page->bin_index); panic("free(): page %p: invalid bin_index %d\n", page, page->bin_index);
@@ -1389,7 +1403,8 @@ heap_free(heap_allocator *heap, void *address)
heap_bin *bin = &heap->bins[page->bin_index]; heap_bin *bin = &heap->bins[page->bin_index];
if (((addr_t)address - area->base - page->index if (((addr_t)address - area->base - page->index
* heap->page_size) % bin->element_size != 0) { * heap->page_size) % bin->element_size != 0) {
panic("free(): passed invalid pointer %p supposed to be in bin for element size %ld\n", address, bin->element_size); panic("free(): passed invalid pointer %p supposed to be in bin for "
"element size %ld\n", address, bin->element_size);
mutex_unlock(&heap->lock); mutex_unlock(&heap->lock);
return B_ERROR; return B_ERROR;
} }
@@ -1398,9 +1413,11 @@ heap_free(heap_allocator *heap, void *address)
if (((uint32 *)address)[1] == 0xdeadbeef) { if (((uint32 *)address)[1] == 0xdeadbeef) {
// This block looks like it was freed already, walk the free list // This block looks like it was freed already, walk the free list
// on this page to make sure this address doesn't exist. // on this page to make sure this address doesn't exist.
for (addr_t *temp = page->free_list; temp != NULL; temp = (addr_t *)*temp) { for (addr_t *temp = page->free_list; temp != NULL;
temp = (addr_t *)*temp) {
if (temp == address) { if (temp == address) {
panic("free(): address %p already exists in page free list\n", address); panic("free(): address %p already exists in page free "
"list\n", address);
mutex_unlock(&heap->lock); mutex_unlock(&heap->lock);
return B_ERROR; return B_ERROR;
} }
@@ -1409,12 +1426,14 @@ heap_free(heap_allocator *heap, void *address)
uint32 *dead = (uint32 *)address; uint32 *dead = (uint32 *)address;
if (bin->element_size % 4 != 0) { if (bin->element_size % 4 != 0) {
panic("free(): didn't expect a bin element size that is not a multiple of 4\n"); panic("free(): didn't expect a bin element size that is not a "
"multiple of 4\n");
mutex_unlock(&heap->lock); mutex_unlock(&heap->lock);
return B_ERROR; return B_ERROR;
} }
// the first 4 bytes are overwritten with the next free list pointer later // the first 4 bytes are overwritten with the next free list pointer
// later
for (uint32 i = 1; i < bin->element_size / sizeof(uint32); i++) for (uint32 i = 1; i < bin->element_size / sizeof(uint32); i++)
dead[i] = 0xdeadbeef; dead[i] = 0xdeadbeef;
#endif #endif
@@ -1521,7 +1540,8 @@ heap_realloc(heap_allocator *heap, void *address, void **newAddress,
heap_page *page = &area->page_table[((addr_t)address - area->base) heap_page *page = &area->page_table[((addr_t)address - area->base)
/ heap->page_size]; / heap->page_size];
if (page->bin_index > heap->bin_count) { if (page->bin_index > heap->bin_count) {
panic("realloc(): page %p: invalid bin_index %d\n", page, page->bin_index); panic("realloc(): page %p: invalid bin_index %d\n", page,
page->bin_index);
mutex_unlock(&heap->lock); mutex_unlock(&heap->lock);
return B_ERROR; return B_ERROR;
} }
@@ -1671,7 +1691,7 @@ heap_grow_thread(void *)
// one to make some room. // one to make some room.
TRACE(("heap_grower: grow heaps will run out of memory soon\n")); TRACE(("heap_grower: grow heaps will run out of memory soon\n"));
if (heap_create_new_heap_area(sGrowHeap, "additional grow heap", if (heap_create_new_heap_area(sGrowHeap, "additional grow heap",
HEAP_DEDICATED_GROW_SIZE) != B_OK) HEAP_DEDICATED_GROW_SIZE) != B_OK)
dprintf("heap_grower: failed to create new grow heap area\n"); dprintf("heap_grower: failed to create new grow heap area\n");
} }
@@ -1684,7 +1704,7 @@ heap_grow_thread(void *)
// allocation cannot be fulfilled due to lack of contiguous // allocation cannot be fulfilled due to lack of contiguous
// pages) // pages)
if (heap_create_new_heap_area(heap, "additional heap", if (heap_create_new_heap_area(heap, "additional heap",
HEAP_GROW_SIZE) != B_OK) HEAP_GROW_SIZE) != B_OK)
dprintf("heap_grower: failed to create new heap area\n"); dprintf("heap_grower: failed to create new heap area\n");
sLastHandledGrowRequest[i] = sLastGrowRequest[i]; sLastHandledGrowRequest[i] = sLastGrowRequest[i];
} }
@@ -1768,7 +1788,8 @@ heap_init_post_thread()
B_ANY_KERNEL_BLOCK_ADDRESS, HEAP_DEDICATED_GROW_SIZE, B_FULL_LOCK, B_ANY_KERNEL_BLOCK_ADDRESS, HEAP_DEDICATED_GROW_SIZE, B_FULL_LOCK,
B_KERNEL_READ_AREA | B_KERNEL_WRITE_AREA); B_KERNEL_READ_AREA | B_KERNEL_WRITE_AREA);
if (growHeapArea < B_OK) { if (growHeapArea < B_OK) {
panic("heap_init_post_thread(): couldn't allocate dedicate grow heap area"); panic("heap_init_post_thread(): couldn't allocate dedicate grow heap "
"area");
return growHeapArea; return growHeapArea;
} }
@@ -1947,7 +1968,8 @@ free(void *address)
&& info->size == areaInfo.size && info->base == areaInfo.address && info->size == areaInfo.size && info->base == areaInfo.address
&& info->allocation_size < areaInfo.size) { && info->allocation_size < areaInfo.size) {
delete_area(area); delete_area(area);
TRACE(("free(): freed huge allocation by deleting area %ld\n", area)); TRACE(("free(): freed huge allocation by deleting area %ld\n",
area));
return; return;
} }
} }
@@ -2002,8 +2024,8 @@ realloc(void *address, size_t newSize)
if (available >= newSize) { if (available >= newSize) {
// there is enough room available for the newSize // there is enough room available for the newSize
TRACE(("realloc(): new size %ld fits in old area %ld with %ld available\n", TRACE(("realloc(): new size %ld fits in old area %ld with %ld "
newSize, area, available)); "available\n", newSize, area, available));
return address; return address;
} }
@@ -2017,13 +2039,14 @@ realloc(void *address, size_t newSize)
memcpy(newAddress, address, min_c(newSize, info->allocation_size)); memcpy(newAddress, address, min_c(newSize, info->allocation_size));
delete_area(area); delete_area(area);
TRACE(("realloc(): allocated new block %p for size %ld and deleted old area %ld\n", TRACE(("realloc(): allocated new block %p for size %ld and deleted "
newAddress, newSize, area)); "old area %ld\n", newAddress, newSize, area));
return newAddress; return newAddress;
} }
} }
panic("realloc(): failed to realloc address %p to size %lu\n", address, newSize); panic("realloc(): failed to realloc address %p to size %lu\n", address,
newSize);
return NULL; return NULL;
} }