Full PMM implementation

This commit is contained in:
2025-04-04 16:58:54 +02:00
parent 5d7a4d790f
commit 25771de53e
6 changed files with 78 additions and 28 deletions
+1
View File
@@ -40,6 +40,7 @@ typedef char* va_list;
#define max(_x, _y) ({ typeof(_x) __x = (_x); typeof(_y) __y = (_y); __x > __y ? __x : __y; })
#define ceil(_x, _y) ((((_x) + (_y)) (_y)) * (_y))
#define floor(_x, _y) ((_x) - ((_x) % (_y)))
#define dceil(_x, _y) (((_x) + (_y) - 1) / (_y))
/*
* Attribute definitions
+2
View File
@@ -27,6 +27,8 @@ extern uint32_t init_pagedir[1024]; // Defined in entry.s for initial paging
extern size_t pag_pageCount;
int pag_init(void);
void pag_registerTempFrame(uint32_t target);
uint32_t pag_tempFrame(void);
void pag_mapPage(uint32_t vaddr, uint32_t paddr, uint32_t flags);
uint32_t pag_umapPage(uint32_t vaddr);
void* pag_virtToPhys(uint32_t vaddr);
+2
View File
@@ -6,6 +6,8 @@
#define PMM_BS 4096 // Block Size
#define PMM_BPB 8 // Blocks per byte
extern int pmm_ready;
int pmm_init(void);
void pmm_initRegion(size_t base, size_t len);
void pmm_deinitRegion(size_t base, size_t len);