blob: 23b014d31698135bfe2ff33211d48488d5a160c4 (
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
29
30
31
32
33
34
35
36
37
38
39
40
|
#pragma once
#include <kc/lib.h>
#include <kernel/entry.h>
#include <kernel/memory/paging.h>
#include <kernel/memory/range.h>
typedef int (*memory_space_handler_func)(uint32_t code, void *vaddr);
enum page_map_flags
{
CONTENT_CODE = 0x1,
CONTENT_RODATA = 0x2,
CONTENT_RWDATA = 0x3,
CONTENT_MASK = 0x3,
SIZE_4K = 0x4,
SIZE_2M = 0x8,
SIZE_1G = 0xc,
SIZE_MASK = 0xc,
};
void memory_init(struct kc_boot_data *boot_data);
void *page_map(phys_addr_t paddr, enum page_map_flags flags);
void page_unmap(void *vaddr);
phys_addr_t page_alloc(void);
void page_free(phys_addr_t paddr);
void *heap_alloc(size_t size);
void heap_free(void *block);
void *vm_alloc(size_t size);
void vm_free(void *block);
void *memory_alloc(size_t size);
void memory_free(void *block);
|