Add kfree_frame for page frame allocator
This commit is contained in:
parent
7e3279dba1
commit
1e6f9083b8
|
@ -10,6 +10,7 @@
|
||||||
typedef uint32_t page_addr_t;
|
typedef uint32_t page_addr_t;
|
||||||
|
|
||||||
page_addr_t kalloc_frame();
|
page_addr_t kalloc_frame();
|
||||||
|
void kfree_frame(page_addr_t addr);
|
||||||
void paging_init();
|
void paging_init();
|
||||||
void page_fault(registers_t regs);
|
void page_fault(registers_t regs);
|
||||||
|
|
||||||
|
|
|
@ -61,6 +61,11 @@ page_addr_t kalloc_frame() {
|
||||||
return page_frame_number * PAGE_SIZE;
|
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() {
|
void paging_init() {
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
for(i = 0; i < 1024; i++) {
|
for(i = 0; i < 1024; i++) {
|
||||||
|
|
Loading…
Reference in New Issue