diff options
author | Andreas Baumann <mail@andreasbaumann.cc> | 2017-07-14 20:11:00 +0200 |
---|---|---|
committer | Andreas Baumann <mail@andreasbaumann.cc> | 2017-07-14 20:11:00 +0200 |
commit | 5956699139b783c13869a1097bfb5dba8e867b0f (patch) | |
tree | ad8c7b18559b501332653053b37f3b9ca3a51a9a /src/kernel/memorymanagement.h | |
parent | fb241939606d3cab1a389b385a0be3bca9a9c6ab (diff) | |
download | abaos-5956699139b783c13869a1097bfb5dba8e867b0f.tar.gz abaos-5956699139b783c13869a1097bfb5dba8e867b0f.tar.bz2 |
added stats functions to memory manager, don't use internal members
added simple chunk-based allocation/deallocation strategy (leads to framgentation)
Diffstat (limited to 'src/kernel/memorymanagement.h')
-rw-r--r-- | src/kernel/memorymanagement.h | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/kernel/memorymanagement.h b/src/kernel/memorymanagement.h index 299fa4c..6dee417 100644 --- a/src/kernel/memorymanagement.h +++ b/src/kernel/memorymanagement.h @@ -2,17 +2,27 @@ #define MEMORYMANAGEMENT_H #include <stddef.h> +#include <stdbool.h> + #include "stdint.h" +typedef struct memory_chunk_t { + struct memory_chunk_t *next; + struct memory_chunk_t *prev; + bool allocated; + size_t size; +} memory_chunk_t; + typedef struct { size_t offset; size_t size; - uint32_t prev_ptr; - uint32_t free_ptr; + memory_chunk_t *first; } memory_manager_t; void memory_manager_init( memory_manager_t *memory_manager, size_t offset, size_t size ); void *memory_manager_allocate( memory_manager_t *memory_manager, size_t size ); void memory_manager_deallocate( memory_manager_t *memory_manager, void **p ); +size_t memory_manager_stats_used( memory_manager_t *memory_manager ); +size_t memory_manager_stats_free( memory_manager_t *memory_manager ); #endif // MEMORYMANAGEMENT_H |