don't mark framebuffer as free when destroying process
This commit is contained in:
parent
8e0c51ae5e
commit
0b4fdb5384
1 changed files with 8 additions and 4 deletions
|
|
@ -262,10 +262,14 @@ void destroy_process(struct process *process) {
|
|||
if (process->p3_virtual_base[p3i]) {
|
||||
for (int p2i = 0; p2i < 512; ++p2i)
|
||||
if (process->p2_virtual_bases[p3i][p2i]) {
|
||||
for (int p1i = 0; p1i < 512; ++p1i)
|
||||
mark_physical_memory_free(
|
||||
process->p1_virtual_bases[p3i][p2i][p1i] & 0x7ffffffffffff000,
|
||||
4096);
|
||||
for (int p1i = 0; p1i < 512; ++p1i) {
|
||||
uint64_t pma =
|
||||
process->p1_virtual_bases[p3i][p2i][p1i] & 0x7ffffffffffff000;
|
||||
if (pma >= fb_physical_base &&
|
||||
pma < fb_physical_base + fb_pitch * fb_height)
|
||||
continue;
|
||||
mark_physical_memory_free(pma, 4096);
|
||||
}
|
||||
unmap_and_free_kernel_page(process->p1_virtual_bases[p3i][p2i]);
|
||||
}
|
||||
unmap_and_free_kernel_page(process->p2_virtual_bases[p3i]);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue