summaryrefslogtreecommitdiff
path: root/src/kernel/memorymanagement.h
blob: 6dee417c3d95150706c5b83e05cf409d12ba9b5c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#ifndef MEMORYMANAGEMENT_H
#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;
	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