kheap info
This commit is contained in:
@@ -157,4 +157,33 @@ void* kalloc_stack()
|
||||
{
|
||||
uint8_t* ptr = kmalloc(PROCESS_STACK_SIZE); // As it's out of kmalloc, stack is already mapped into kernel space
|
||||
return ptr ? ptr+PROCESS_STACK_SIZE : NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* kheap_info - Display heap info
|
||||
*
|
||||
* This function writes the size of the heap (total),
|
||||
* the number of allocated bytes, and the number of
|
||||
* free bytes to the standard output.
|
||||
*/
|
||||
void kheap_info()
|
||||
{
|
||||
uint64_t free_bytes = 0;
|
||||
struct heap_block_t* curr = (struct heap_block_t*)kheap_start;
|
||||
|
||||
while (curr) {
|
||||
if (curr->free == true) {
|
||||
free_bytes += curr->size;
|
||||
}
|
||||
curr = curr->next;
|
||||
}
|
||||
|
||||
uint64_t total = end-kheap_start;
|
||||
|
||||
printf("total=% 8u bytes (%u kB)\r\n"
|
||||
"alloc=% 8u bytes (%u kB)\r\n"
|
||||
" free=% 8u bytes (%u kB)\r\n",
|
||||
total, (total)/1000,
|
||||
total-free_bytes, (total-free_bytes)/1000,
|
||||
free_bytes, free_bytes/1000);
|
||||
}
|
||||
Reference in New Issue
Block a user