2026-06-14 00:34:11 -05:00
|
|
|
#ifndef KMM_H
|
|
|
|
|
#define KMM_H
|
|
|
|
|
|
|
|
|
|
#include <stdint.h>
|
|
|
|
|
|
2026-06-16 18:44:31 -05:00
|
|
|
#define PAGE_PRESENT 0x1
|
|
|
|
|
#define PAGE_WRITABLE 0x2
|
|
|
|
|
#define PAGE_USER 0x4
|
|
|
|
|
|
2026-06-24 16:47:22 -05:00
|
|
|
#define PAGE_SIZE 4096
|
|
|
|
|
|
2026-06-14 00:34:11 -05:00
|
|
|
typedef struct __attribute__((packed)) {
|
|
|
|
|
uint32_t addr;
|
|
|
|
|
} mem_page_t;
|
|
|
|
|
|
2026-06-15 18:09:04 -04:00
|
|
|
void init_pmm(void* mmap_base, uint32_t mmap_limit);
|
|
|
|
|
void init_page_tables();
|
2026-06-16 18:44:31 -05:00
|
|
|
|
|
|
|
|
void* p_alloc_frame();
|
2026-06-15 23:35:01 -05:00
|
|
|
|
|
|
|
|
uint32_t total_free_memory();
|
2026-06-14 18:53:54 -05:00
|
|
|
|
2026-06-26 20:05:01 -05:00
|
|
|
void* create_task_pd();
|
2026-07-07 00:13:24 -05:00
|
|
|
void* clone_task_pd();
|
2026-06-16 10:04:49 -04:00
|
|
|
|
2026-06-16 18:44:31 -05:00
|
|
|
void map_page(uint32_t vaddr, uint32_t paddr, uint32_t flags);
|
|
|
|
|
|
2026-06-30 19:26:31 -05:00
|
|
|
void load_pd(void* paddr);
|
|
|
|
|
|
|
|
|
|
void flush_tlb();
|
|
|
|
|
void disable_pae();
|
|
|
|
|
|
2026-06-14 18:53:54 -05:00
|
|
|
#endif
|