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 }
Основные определения ядра
struct registers __attribute__((packed))
Структура данных пакета от мыши
Definition: psf.h:19
void * memset(void *ptr, char value, size_t num)
Заполнение массива указанными символами
Definition: string.c:203
Definition: vmm.h:14
Definition: vmm.h:19