mirror of
https://github.com/wichtounet/thor-os.git
synced 2025-09-09 12:31:06 -04:00
Track number of dynamic allocations
This commit is contained in:
parent
10d17dff85
commit
1ccf8ce39d
@ -25,6 +25,7 @@ T* k_malloc(){
|
|||||||
|
|
||||||
uint64_t allocated_memory();
|
uint64_t allocated_memory();
|
||||||
uint64_t used_memory();
|
uint64_t used_memory();
|
||||||
|
uint64_t allocations();
|
||||||
uint64_t free_memory();
|
uint64_t free_memory();
|
||||||
|
|
||||||
void debug();
|
void debug();
|
||||||
|
@ -24,6 +24,7 @@ const bool DEBUG_MALLOC = false;
|
|||||||
const bool TRACE_MALLOC = false;
|
const bool TRACE_MALLOC = false;
|
||||||
|
|
||||||
size_t _used_memory;
|
size_t _used_memory;
|
||||||
|
size_t _allocations;
|
||||||
size_t _allocated_memory;
|
size_t _allocated_memory;
|
||||||
|
|
||||||
struct malloc_footer_chunk;
|
struct malloc_footer_chunk;
|
||||||
@ -323,9 +324,18 @@ std::string sysfs_used(){
|
|||||||
return std::to_string(kalloc::used_memory());
|
return std::to_string(kalloc::used_memory());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string sysfs_allocations(){
|
||||||
|
return std::to_string(kalloc::allocations());
|
||||||
|
}
|
||||||
|
|
||||||
} //end of anonymous namespace
|
} //end of anonymous namespace
|
||||||
|
|
||||||
void kalloc::init(){
|
void kalloc::init(){
|
||||||
|
// Set the counters
|
||||||
|
_used_memory = 0;
|
||||||
|
_allocations = 0;
|
||||||
|
_allocated_memory = 0;
|
||||||
|
|
||||||
//Init the fake head
|
//Init the fake head
|
||||||
init_head();
|
init_head();
|
||||||
|
|
||||||
@ -337,6 +347,7 @@ void kalloc::finalize(){
|
|||||||
sysfs::set_dynamic_value(path("/sys"), path("/memory/dynamic/free"), &sysfs_free);
|
sysfs::set_dynamic_value(path("/sys"), path("/memory/dynamic/free"), &sysfs_free);
|
||||||
sysfs::set_dynamic_value(path("/sys"), path("/memory/dynamic/used"), &sysfs_used);
|
sysfs::set_dynamic_value(path("/sys"), path("/memory/dynamic/used"), &sysfs_used);
|
||||||
sysfs::set_dynamic_value(path("/sys"), path("/memory/dynamic/allocated"), &sysfs_allocated);
|
sysfs::set_dynamic_value(path("/sys"), path("/memory/dynamic/allocated"), &sysfs_allocated);
|
||||||
|
sysfs::set_dynamic_value(path("/sys"), path("/memory/dynamic/allocations"), &sysfs_allocations);
|
||||||
}
|
}
|
||||||
|
|
||||||
void* kalloc::k_malloc(uint64_t bytes){
|
void* kalloc::k_malloc(uint64_t bytes){
|
||||||
@ -414,6 +425,7 @@ void* kalloc::k_malloc(uint64_t bytes){
|
|||||||
}
|
}
|
||||||
|
|
||||||
_used_memory += current->size() + META_SIZE;
|
_used_memory += current->size() + META_SIZE;
|
||||||
|
++_allocations;
|
||||||
|
|
||||||
//Address of the start of the block
|
//Address of the start of the block
|
||||||
auto block_start = reinterpret_cast<uintptr_t>(current) + sizeof(malloc_header_chunk);
|
auto block_start = reinterpret_cast<uintptr_t>(current) + sizeof(malloc_header_chunk);
|
||||||
@ -460,6 +472,10 @@ size_t kalloc::used_memory(){
|
|||||||
return _used_memory;
|
return _used_memory;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
size_t kalloc::allocations(){
|
||||||
|
return _allocations;
|
||||||
|
}
|
||||||
|
|
||||||
size_t kalloc::free_memory(){
|
size_t kalloc::free_memory(){
|
||||||
size_t memory_free = 0;
|
size_t memory_free = 0;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user