Use reference counting to track filetime of process PD
All checks were successful
Build documentation / build-and-deploy (push) Successful in 26s
All checks were successful
Build documentation / build-and-deploy (push) Successful in 26s
This commit is contained in:
@@ -60,16 +60,16 @@ bool proc_map (struct proc* proc, uintptr_t start_paddr, uintptr_t start_vaddr,
|
||||
|
||||
flags &= ~(MM_PD_LOCK | MM_PD_RELOAD); /* clear LOCK flag if present, because we lock manualy */
|
||||
|
||||
spin_lock (&proc->pd.lock, &ctxprpd);
|
||||
spin_lock (&proc->pd->lock, &ctxprpd);
|
||||
|
||||
list_append (proc->mappings, &mapping->proc_mappings_link);
|
||||
|
||||
for (uintptr_t vpage = start_vaddr, ppage = start_paddr; vpage < start_vaddr + pages * PAGE_SIZE;
|
||||
vpage += PAGE_SIZE, ppage += PAGE_SIZE) {
|
||||
mm_map_page (&proc->pd, ppage, vpage, flags);
|
||||
mm_map_page (proc->pd, ppage, vpage, flags);
|
||||
}
|
||||
|
||||
spin_unlock (&proc->pd.lock, &ctxprpd);
|
||||
spin_unlock (&proc->pd->lock, &ctxprpd);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -85,7 +85,7 @@ bool proc_unmap (struct proc* proc, uintptr_t start_vaddr, size_t pages) {
|
||||
if (tail_mapping == NULL)
|
||||
return false;
|
||||
|
||||
spin_lock (&proc->pd.lock, &ctxprpd);
|
||||
spin_lock (&proc->pd->lock, &ctxprpd);
|
||||
|
||||
list_foreach (proc->mappings, mapping_link, mapping_link_tmp) {
|
||||
struct proc_mapping* mapping =
|
||||
@@ -127,10 +127,10 @@ bool proc_unmap (struct proc* proc, uintptr_t start_vaddr, size_t pages) {
|
||||
free (tail_mapping);
|
||||
|
||||
for (uintptr_t vpage = start_vaddr; vpage < end_vaddr; vpage += PAGE_SIZE) {
|
||||
mm_unmap_page (&proc->pd, vpage, 0);
|
||||
mm_unmap_page (proc->pd, vpage, 0);
|
||||
}
|
||||
|
||||
spin_unlock (&proc->pd.lock, &ctxprpd);
|
||||
spin_unlock (&proc->pd->lock, &ctxprpd);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user