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;
}
pcb->intr_ctx = __current->intr_ctx;
pcb->parent = __current;
+ memcpy(pcb->fxstate, __current->fxstate, 512);
+
+ if (__current->cwd) {
+ pcb->cwd = __current->cwd;
+ vfs_ref_dnode(pcb->cwd);
+ }
+
__copy_fdtable(pcb);
region_copy(&__current->mm.regions, &pcb->mm.regions);
// 根据 mm_region 进一步配置页表
struct mm_region *pos, *n;
- llist_for_each(pos, n, &pcb->mm.regions.head, head)
+ llist_for_each(pos, n, &pcb->mm.regions, head)
{
// 如果写共享,则不作处理。
if ((pos->attr & REGION_WSHARED)) {