git://scm.lunaixsky.com
/
lunaix-os.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
feat: support ioctl() syscall for direct control to devices
[lunaix-os.git]
/
lunaix-os
/
kernel
/
process
/
process.c
diff --git
a/lunaix-os/kernel/process/process.c
b/lunaix-os/kernel/process/process.c
index e30e46120a21b4e213c4087d10f158cc7352ca99..82f1ffa7dcec24bd10e15f09bae93f3e66b0d899 100644
(file)
--- a/
lunaix-os/kernel/process/process.c
+++ b/
lunaix-os/kernel/process/process.c
@@
-123,7
+123,7
@@
__DEFINE_LXSYSCALL2(int, setpgid, pid_t, pid, pid_t, pgid)
struct proc_info* gruppenfuhrer = get_process(pgid);
struct proc_info* gruppenfuhrer = get_process(pgid);
- if (!gruppenfuhrer || proc->pgid ==
proc
->pid) {
+ if (!gruppenfuhrer || proc->pgid ==
gruppenfuhrer
->pid) {
__current->k_status = EINVAL;
return -1;
}
__current->k_status = EINVAL;
return -1;
}
@@
-196,6
+196,11
@@
dup_proc()
pcb->intr_ctx = __current->intr_ctx;
pcb->parent = __current;
pcb->intr_ctx = __current->intr_ctx;
pcb->parent = __current;
+ if (__current->cwd) {
+ pcb->cwd = __current->cwd;
+ vfs_ref_dnode(pcb->cwd);
+ }
+
__copy_fdtable(pcb);
region_copy(&__current->mm.regions, &pcb->mm.regions);
__copy_fdtable(pcb);
region_copy(&__current->mm.regions, &pcb->mm.regions);