summaryrefslogtreecommitdiff
path: root/src/kernel/memorymanagement.h
diff options
context:
space:
mode:
authorAndreas Baumann <mail@andreasbaumann.cc>2017-07-14 20:11:00 +0200
committerAndreas Baumann <mail@andreasbaumann.cc>2017-07-14 20:11:00 +0200
commit5956699139b783c13869a1097bfb5dba8e867b0f (patch)
treead8c7b18559b501332653053b37f3b9ca3a51a9a /src/kernel/memorymanagement.h
parentfb241939606d3cab1a389b385a0be3bca9a9c6ab (diff)
downloadabaos-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.h14
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