diff --git a/src/include/paging.h b/src/include/paging.h index 5208218..d4a46af 100644 --- a/src/include/paging.h +++ b/src/include/paging.h @@ -10,6 +10,7 @@ typedef uint32_t page_addr_t; page_addr_t kalloc_frame(); +void kfree_frame(page_addr_t addr); void paging_init(); void page_fault(registers_t regs); diff --git a/src/paging.c b/src/paging.c index b148241..916c43e 100644 --- a/src/paging.c +++ b/src/paging.c @@ -61,6 +61,11 @@ page_addr_t kalloc_frame() { return page_frame_number * PAGE_SIZE; } +void kfree_frame(page_addr_t addr) { + page_addr_t index = addr / PAGE_SIZE; + bitmap[index / ENTRY_WIDTH] |= (1U << ((index / ENTRY_WIDTH) + (index % ENTRY_WIDTH))); +} + void paging_init() { unsigned int i; for(i = 0; i < 1024; i++) {