Lines Matching defs:pr
179 process_initialize(struct process *pr, struct proc *p)
181 refcnt_init(&pr->ps_refcnt);
184 pr->ps_mainproc = p;
185 TAILQ_INIT(&pr->ps_threads);
186 TAILQ_INSERT_TAIL(&pr->ps_threads, p, p_thr_link);
187 pr->ps_threadcnt = 1;
188 p->p_p = pr;
191 pr->ps_ucred = p->p_ucred;
192 crhold(pr->ps_ucred);
196 LIST_INIT(&pr->ps_children);
197 LIST_INIT(&pr->ps_orphans);
198 LIST_INIT(&pr->ps_ftlist);
199 LIST_INIT(&pr->ps_sigiolst);
200 TAILQ_INIT(&pr->ps_tslpqueue);
202 rw_init(&pr->ps_lock, "pslock");
203 mtx_init(&pr->ps_mtx, IPL_HIGH);
204 klist_init_mutex(&pr->ps_klist, &pr->ps_mtx);
206 timeout_set_flags(&pr->ps_realit_to, realitexpire, pr,
208 timeout_set(&pr->ps_rucheck_to, rucheck, pr);
218 struct process *pr;
220 pr = pool_get(&process_pool, PR_WAITOK);
227 memset(&pr->ps_startzero, 0,
228 (caddr_t)&pr->ps_endzero - (caddr_t)&pr->ps_startzero);
229 memcpy(&pr->ps_startcopy, &parent->ps_startcopy,
230 (caddr_t)&pr->ps_endcopy - (caddr_t)&pr->ps_startcopy);
232 process_initialize(pr, p);
233 pr->ps_pid = allocpid();
234 lim_fork(parent, pr);
237 pr->ps_pptr = parent;
238 pr->ps_ppid = parent->ps_pid;
241 pr->ps_textvp = parent->ps_textvp;
242 if (pr->ps_textvp)
243 vref(pr->ps_textvp);
246 unveil_copy(parent, pr);
248 pr->ps_flags = parent->ps_flags &
252 pr->ps_flags |= parent->ps_flags & PS_CONTROLT;
255 pr->ps_pin.pn_pins = mallocarray(parent->ps_pin.pn_npins,
257 memcpy(pr->ps_pin.pn_pins, parent->ps_pin.pn_pins,
261 pr->ps_libcpin.pn_pins = mallocarray(parent->ps_libcpin.pn_npins,
263 memcpy(pr->ps_libcpin.pn_pins, parent->ps_libcpin.pn_pins,
272 pr->ps_fd = fdshare(parent);
274 pr->ps_fd = fdcopy(parent);
275 pr->ps_sigacts = sigactsinit(parent);
277 pr->ps_vmspace = uvmspace_share(parent);
279 pr->ps_vmspace = uvmspace_fork(parent);
282 startprofclock(pr);
284 pr->ps_flags |= parent->ps_flags & PS_TRACED;
286 pr->ps_flags |= PS_NOZOMBIE;
288 pr->ps_flags |= PS_SYSTEM;
291 pr->ps_flags |= PS_EMBRYO;
297 LIST_INSERT_HEAD(&allprocess, pr, ps_list);
299 return pr;
352 struct process *pr;
405 pr = process_new(p, curpr, flags);
407 p->p_fd = pr->ps_fd;
408 p->p_vmspace = pr->ps_vmspace;
409 if (pr->ps_flags & PS_SYSTEM)
413 atomic_setbits_int(&pr->ps_flags, PS_PPWAIT);
423 ktrsettrace(pr, curpr->ps_traceflag, curpr->ps_tracevp,
437 vm = pr->ps_vmspace;
449 if (pr->ps_flags & PS_TRACED && flags & FORK_FORK)
456 LIST_INSERT_HEAD(PIDHASH(pr->ps_pid), pr, ps_hash);
457 LIST_INSERT_AFTER(curpr, pr, ps_pglist);
458 LIST_INSERT_HEAD(&curpr->ps_children, pr, ps_sibling);
460 mtx_enter(&pr->ps_mtx);
461 if (pr->ps_flags & PS_TRACED) {
462 pr->ps_opptr = curpr;
463 process_reparent(pr, curpr->ps_pptr);
469 pr->ps_ptstat = newptstat;
472 pr->ps_ptstat->pe_report_event = PTRACE_FORK;
473 curpr->ps_ptstat->pe_other_pid = pr->ps_pid;
474 pr->ps_ptstat->pe_other_pid = curpr->ps_pid;
477 mtx_leave(&pr->ps_mtx);
482 nanouptime(&pr->ps_start);
483 pr->ps_acflag = AFORK;
484 atomic_clearbits_int(&pr->ps_flags, PS_EMBRYO);
496 knote_processfork(curpr, pr->ps_pid);
534 *retval = pr->ps_pid;
542 struct process *pr = curp->p_p;
569 p->p_p = pr;
572 p->p_fd = pr->ps_fd;
573 p->p_vmspace = pr->ps_vmspace;
588 mtx_enter(&pr->ps_mtx);
589 TAILQ_INSERT_TAIL(&pr->ps_threads, p, p_thr_link);
590 pr->ps_threadcnt++;
596 if (pr->ps_single) {
597 pr->ps_singlecnt++;
600 mtx_leave(&pr->ps_mtx);