SayoriOS 0.3.3

vmm.h
1 // Charmander - a new virtual memory manager by NDRAEY (c) 2023
2 // for SayoriOS
3 //
4 // Created by ndraey on 05.11.23.
5 //
6
7 #pragma once
8
9 #include <common.h>
10 #include "lib/string.h"
11
12 // #define kfree_debug(ptr) do { qemu_note("FREE BLOCK (%x) at %s:%d", ptr, __FILE__, __LINE__); kfree(ptr); } while(0);
13
14 struct heap_entry {
15 size_t address;
16 size_t length;
17 };
18
19 typedef struct heap {
20 size_t allocated_count;
21 size_t capacity; // Entries
22 size_t start;
23 size_t used_memory;
24 struct heap_entry* memory;
25 } heap_t;
26
27 extern heap_t system_heap;
28
29 void vmm_init();
30 void *alloc_no_map(size_t size, size_t align);
31 void free_no_map(void* ptr);
32 bool vmm_is_page_used_by_entries(size_t address);
33 void* kmalloc_common(size_t size, size_t align) __attribute__((__malloc__)) __attribute__((__alloc_size__(1)));
34
35 SAYORI_INLINE void* kmalloc(size_t size) {
36 // return kmalloc_common(size, sizeof(size_t)); // Alignment, blyad
37 return kmalloc_common(size, 0);
38 }
39
40 void* krealloc(void* ptr, size_t memory_size);
41 void kfree(void* ptr);
42 void* clone_kernel_page_directory(size_t virts_out[1024]);
43
44 void vmm_debug_switch(bool enable);
45
46 SAYORI_INLINE void* kcalloc(size_t size, size_t amount) {
47 void* x = kmalloc(size * amount);
48
49 memset(x, 0, size * amount);
50
51 return x;
52 }
common.h
Основные определения ядра
__attribute__
struct registers __attribute__((packed))
Структура данных пакета от мыши
Definition: psf.h:19
memset
void * memset(void *ptr, char value, size_t num)
Заполнение массива указанными символами
Definition: string.c:203
heap_entry
Definition: vmm.h:14
heap
Definition: vmm.h:19