aboutsummaryrefslogtreecommitdiff
path: root/kernel/proc/proc.c
diff options
context:
space:
mode:
authorsotech117 <michael_foiani@brown.edu>2024-05-14 03:19:46 +0000
committersotech117 <michael_foiani@brown.edu>2024-05-14 03:19:46 +0000
commit06d50155ac0bd079bfca0f5728346d8beeb205f2 (patch)
tree2f20c8ba099304d6ea06fb76e8a0807b8afa5a5f /kernel/proc/proc.c
parent7585cb5ad84babe9db8c6595de464e33fb878f0c (diff)
weenix fixes
Diffstat (limited to 'kernel/proc/proc.c')
-rw-r--r--kernel/proc/proc.c20
1 files changed, 17 insertions, 3 deletions
diff --git a/kernel/proc/proc.c b/kernel/proc/proc.c
index f13064a..2ade163 100644
--- a/kernel/proc/proc.c
+++ b/kernel/proc/proc.c
@@ -223,9 +223,6 @@ proc_t *proc_create(const char *name)
proc_initproc = proc;
}
- proc->p_vmmap = vmmap_clone(curproc->p_vmmap);
- curproc->p_vmmap->vmm_proc = proc;
-
#ifdef __VFS__
// clone and ref the files from curproc
for (int fd = 0; fd < NFILES; fd++)
@@ -243,6 +240,23 @@ proc_t *proc_create(const char *name)
}
#endif
+#ifdef __VM__
+ proc->p_vmmap = vmmap_clone(curproc->p_vmmap);
+ curproc->p_vmmap->vmm_proc = proc;
+
+ KASSERT(proc->p_vmmap != NULL); //FIXME!
+
+ // copy the table of file descriptors
+ for (int i = 0; i < NFILES; i++)
+ {
+ if (curproc->p_files[i] != NULL)
+ {
+ fref(curproc->p_files[i]);
+ proc->p_files[i] = curproc->p_files[i];
+ }
+ }
+#endif
+
return proc;
}