diff options
author | sotech117 <michael_foiani@brown.edu> | 2024-05-14 03:19:46 +0000 |
---|---|---|
committer | sotech117 <michael_foiani@brown.edu> | 2024-05-14 03:19:46 +0000 |
commit | 06d50155ac0bd079bfca0f5728346d8beeb205f2 (patch) | |
tree | 2f20c8ba099304d6ea06fb76e8a0807b8afa5a5f /kernel/proc/proc.c | |
parent | 7585cb5ad84babe9db8c6595de464e33fb878f0c (diff) |
weenix fixes
Diffstat (limited to 'kernel/proc/proc.c')
-rw-r--r-- | kernel/proc/proc.c | 20 |
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; } |