syscalls: start adding exit syscall, not done yet

This commit is contained in:
2025-06-21 18:54:52 +03:00
parent bb096f826a
commit 70d6aacb91
6 changed files with 102 additions and 3 deletions
+24
View File
@@ -146,3 +146,27 @@ uint32_t* create_page_dir()
return new_pd;
}
void destroy_page_dir(uint32_t* page_dir) {
// Iterate through all page directory entries
for (int i = 0; i < 1024; i++) {
if (page_dir[i] & 1) { // If page table exists
uint32_t* page_table = (uint32_t*)(page_dir[i] & 0xFFFFF000);
// Free all user pages (0-767)
if (i < 768) {
for (int j = 0; j < 1024; j++) {
if (page_table[j] & 1) {
free_page((void*)(page_table[j] & 0xFFFFF000));
}
}
}
// Free the page table itself
free_page(page_table);
}
}
// Free the page directory
free_page(page_dir);
}