diff --git a/kernel/paging.c b/kernel/paging.c index a4f1296..97faaab 100644 --- a/kernel/paging.c +++ b/kernel/paging.c @@ -1,8 +1,14 @@ #include "paging.h" +// Page Entry struct struct page_entry { unsigned int index; unsigned int start_addr; -}; +} page_table[PAGE_TABLE_SIZE]; -page_entry page_table[PAGE_TABLE_SIZE]; +int get_phys_addr(int virt_addr) { + int index = virt_addr / PAGE_SIZE; // page index for the virtual address + int offset = virt_addr % PAGE_SIZE; // actual physical offset for the address + + return page_table[index].start_addr + offset; +} diff --git a/kernel/paging.h b/kernel/paging.h index fa20b2e..9fb6bc2 100644 --- a/kernel/paging.h +++ b/kernel/paging.h @@ -2,5 +2,6 @@ #define PAGE_TABLE_SIZE 128 struct page_entry; -// page_entry page_table[PAGE_TABLE_SIZE]; +char** heap_alloc(unsigned int size); // Process heap allocation +int get_phys_addr(int virt_addr);