Clean up AMD64 memory management code, remove dependency on pd.lock

This commit is contained in:
2026-01-27 19:03:03 +01:00
parent 8bda300f6a
commit a3b62ebd3d
14 changed files with 104 additions and 178 deletions

View File

@@ -24,18 +24,18 @@
static void* sys_get_user_buffer (struct proc* proc, uintptr_t uvaddr, size_t size) {
struct limine_hhdm_response* hhdm = limine_hhdm_request.response;
spin_lock_ctx_t ctxprpd;
spin_lock_ctx_t ctxpg;
spin_lock (&proc->procgroup->pd.lock, &ctxprpd);
spin_lock (&proc->procgroup->lock, &ctxpg);
if (!mm_validate_buffer (&proc->procgroup->pd, (uintptr_t)uvaddr, size, 0)) {
spin_unlock (&proc->procgroup->pd.lock, &ctxprpd);
if (!mm_validate_buffer (&proc->procgroup->pd, (uintptr_t)uvaddr, size)) {
spin_unlock (&proc->procgroup->lock, &ctxpg);
return NULL;
}
uintptr_t out_paddr = mm_v2p (&proc->procgroup->pd, uvaddr, 0);
uintptr_t out_paddr = mm_v2p (&proc->procgroup->pd, uvaddr);
spin_unlock (&proc->procgroup->pd.lock, &ctxprpd);
spin_unlock (&proc->procgroup->lock, &ctxpg);
uintptr_t out_kvaddr = (uintptr_t)hhdm->offset + out_paddr;