Kintsugi OS
0.5.0
x86 Monolithic OS
Loading...
Searching...
No Matches
heap.h
Go to the documentation of this file.
1
#ifndef MM_HEAP_H
2
#define MM_HEAP_H
3
#include "../kklibc/ctypes.h"
4
#define HEAP_START 0xc0000000u
5
#define HEAP_SIZE 0x04000000u
6
#define BLOCK_SIZE 16u
7
8
typedef
struct
mem_block
{
9
u32
size
;
10
struct
mem_block
*
next
;
11
u32
magic
;
12
u8
is_free
;
13
u8
padding
[3];
14
}
mem_block_t
;
15
16
typedef
struct
{
17
u32
heap_start, heap_size,
heap_current_end
,
block_size
;
18
mem_block_t
*
free_blocks
;
19
u32
total_used, total_free, block_count,
alloc_count
, free_count, max_used, leak_count;
20
u32
largest_free
;
21
}
meminfo_t
;
22
23
extern
u32
heap_current_end
;
24
void
heap_init
(
void
);
25
int
expand_heap
(
u32
size);
26
void
*
kmalloc
(
u32
size);
27
void
*
krealloc
(
void
* ptr,
u32
size);
28
void
kfree
(
void
* ptr);
29
void
*
kmalloc_aligned
(
u32
size,
u32
alignment);
30
void
kfree_aligned
(
void
* ptr);
31
meminfo_t
get_meminfo
(
void
);
32
void
kmemdump
(
void
);
33
void
kmemcheck
(
void
* ptr);
34
void
get_freememaddr
(
void
);
35
#endif
u32
unsigned int u32
Definition
ctypes.h:11
u8
unsigned char u8
Definition
ctypes.h:15
kfree
void kfree(void *ptr)
Definition
heap.c:159
krealloc
void * krealloc(void *ptr, u32 size)
Definition
heap.c:174
get_freememaddr
void get_freememaddr(void)
Definition
heap.c:300
expand_heap
int expand_heap(u32 size)
Definition
heap.c:67
get_meminfo
meminfo_t get_meminfo(void)
Definition
heap.c:247
heap_current_end
u32 heap_current_end
Definition
heap.c:7
heap_init
void heap_init(void)
Definition
heap.c:111
kmemcheck
void kmemcheck(void *ptr)
Definition
heap.c:295
kfree_aligned
void kfree_aligned(void *ptr)
Definition
heap.c:232
kmalloc
void * kmalloc(u32 size)
Definition
heap.c:128
kmemdump
void kmemdump(void)
Definition
heap.c:274
mem_block_t
struct mem_block mem_block_t
kmalloc_aligned
void * kmalloc_aligned(u32 size, u32 alignment)
Definition
heap.c:218
mem_block
Definition
heap.h:8
mem_block::magic
u32 magic
Definition
heap.h:11
mem_block::is_free
u8 is_free
Definition
heap.h:12
mem_block::padding
u8 padding[3]
Definition
heap.h:13
mem_block::next
struct mem_block * next
Definition
heap.h:10
mem_block::size
u32 size
Definition
heap.h:9
meminfo_t
Definition
heap.h:16
meminfo_t::largest_free
u32 largest_free
Definition
heap.h:20
meminfo_t::block_size
u32 block_size
Definition
heap.h:17
meminfo_t::alloc_count
u32 alloc_count
Definition
heap.h:19
meminfo_t::free_blocks
mem_block_t * free_blocks
Definition
heap.h:18
src
kernel
mm
heap.h
Generated by
1.9.8