projects
/
pintos-anon
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
7180597
)
Destroy PT pages in addrspace_destroy().
author
Ben Pfaff
<blp@cs.stanford.edu>
Thu, 2 Sep 2004 23:28:07 +0000
(23:28 +0000)
committer
Ben Pfaff
<blp@cs.stanford.edu>
Thu, 2 Sep 2004 23:28:07 +0000
(23:28 +0000)
src/threads/paging.c
patch
|
blob
|
history
diff --git
a/src/threads/paging.c
b/src/threads/paging.c
index 2ae78c3c456cff3a63ae1ddf913db847864e2965..a86969b3290c1a946da5df37105be2aa731ddf34 100644
(file)
--- a/
src/threads/paging.c
+++ b/
src/threads/paging.c
@@
-85,10
+85,26
@@
void
pagedir_destroy (uint32_t *pd)
{
void *kpage, *upage;
pagedir_destroy (uint32_t *pd)
{
void *kpage, *upage;
+ unsigned pde_idx;
+ /* Destroy user pages. */
for (kpage = pagedir_first (pd, &upage); kpage != NULL;
kpage = pagedir_next (pd, &upage))
palloc_free (kpage);
for (kpage = pagedir_first (pd, &upage); kpage != NULL;
kpage = pagedir_next (pd, &upage))
palloc_free (kpage);
+
+ /* Destroy page table pages. */
+ for (pde_idx = 0; pde_idx < pd_no (PHYS_BASE); pde_idx++)
+ {
+ uint32_t pde = pd[pde_idx];
+
+ if (pde != 0)
+ {
+ uint32_t *pt = pde_get_pt (pde);
+ palloc_free (pt);
+ }
+ }
+
+ /* Destroy page directory. */
palloc_free (pd);
}
palloc_free (pd);
}