Lines Matching refs:cp

132 disown_proc(proc_t *pp, proc_t *cp)
139 while (*orphpp != cp)
141 *orphpp = cp->p_nextorph;
143 if (pp->p_child == cp)
144 pp->p_child = cp->p_sibling;
145 if (cp->p_sibling)
146 cp->p_sibling->p_psibling = cp->p_psibling;
147 if (cp->p_psibling)
148 cp->p_psibling->p_sibling = cp->p_sibling;
157 proc_t *cp;
236 if (getproc(&cp, 0, GETPROC_USER) < 0) {
245 TRACE_2(TR_FAC_PROC, TR_PROC_FORK, "proc_fork:cp %p p %p", cp, p);
265 cp->p_as = as;
266 cp->p_flag |= SVFORK;
272 cp->p_segacct = p->p_segacct;
286 error = as_dup(p->p_as, cp);
290 fork_fail(cp);
292 disown_proc(p, cp);
293 mutex_enter(&cp->p_lock);
294 tk = cp->p_task;
295 task_detach(cp);
296 ASSERT(cp->p_pool->pool_ref > 0);
297 atomic_dec_32(&cp->p_pool->pool_ref);
298 mutex_exit(&cp->p_lock);
299 pid_exit(cp, tk);
323 dtrace_fasttrap_fork(p, cp);
330 shmfork(p, cp);
339 (*dtrace_helpers_fork)(p, cp);
359 e.rcep_p.proc = cp;
361 cp->p_rctls = rctl_set_dup(p->p_rctls, p, cp, &e, dup_set, dup_gp,
371 cp->p_lwpdir_sz = 2;
373 cp->p_lwpdir_sz = p->p_lwpdir_sz;
374 cp->p_lwpdir = cp->p_lwpfree = ldp =
375 kmem_zalloc(cp->p_lwpdir_sz * sizeof (lwpdir_t), KM_SLEEP);
376 for (i = 1; i < cp->p_lwpdir_sz; i++, ldp++)
378 cp->p_tidhash_sz = (cp->p_lwpdir_sz + 2) / 2;
379 cp->p_tidhash =
380 kmem_zalloc(cp->p_tidhash_sz * sizeof (tidhash_t), KM_SLEEP);
387 klgrpset_clear(cp->p_lgrpset);
389 clone = forklwp(ttolwp(curthread), cp, curthread->t_tid);
410 clwp = forklwp(ttolwp(t), cp, t->t_tid);
436 lwp_hash_in(cp, clep,
437 cp->p_tidhash, cp->p_tidhash_sz, 0);
448 if (contract_process_fork(NULL, cp, p, B_TRUE) == NULL) {
457 cp->p_lwpid = p->p_lwpid;
459 cp->p_lwpdaemon = p->p_lwpdaemon;
460 cp->p_zombcnt = p->p_zombcnt;
465 cp->p_flag |= p->p_flag & SLWPWRAP;
469 corectl_path_hold(cp->p_corefile = p->p_corefile);
470 corectl_content_hold(cp->p_content = p->p_content);
477 forkpctx(p, cp);
480 utrap_dup(p, cp);
487 if (PTOU(cp)->u_systrap &&
488 prismember(&PTOU(cp)->u_exitmask, curthread->t_sysnum)) {
489 mutex_enter(&cp->p_lock);
490 t = cp->p_tlist;
494 } while ((t = t->t_forw) != cp->p_tlist);
495 mutex_exit(&cp->p_lock);
520 r.r_val1 = (int)cp->p_pid;
534 mutex_enter(&cp->p_lock);
540 cp->p_pidflag |= CLDNOSIGCHLD;
542 cp->p_pidflag |= CLDWAITPID;
548 pgjoin(cp, p->p_pgidp);
549 cp->p_stat = SRUN;
553 t = cp->p_tlist;
569 } while ((t = t->t_forw) != cp->p_tlist);
570 mutex_exit(&cp->p_lock);
577 DTRACE_PROC1(create, proc_t *, cp);
584 mutex_enter(&cp->p_lock);
586 sigdefault(cp);
587 continuelwps(cp);
588 mutex_exit(&cp->p_lock);
591 DTRACE_PROC1(create, proc_t *, cp);
597 CL_FORKRET(curthread, cp->p_tlist);
618 if (cp->p_segacct)
619 shmexit(cp);
620 as = cp->p_as;
621 cp->p_as = &kas;
625 if (cp->p_lwpdir) {
626 for (i = 0, ldp = cp->p_lwpdir; i < cp->p_lwpdir_sz; i++, ldp++)
629 kmem_free(cp->p_lwpdir,
630 cp->p_lwpdir_sz * sizeof (*cp->p_lwpdir));
632 cp->p_lwpdir = NULL;
633 cp->p_lwpfree = NULL;
634 cp->p_lwpdir_sz = 0;
636 if (cp->p_tidhash)
637 kmem_free(cp->p_tidhash,
638 cp->p_tidhash_sz * sizeof (*cp->p_tidhash));
639 cp->p_tidhash = NULL;
640 cp->p_tidhash_sz = 0;
642 forklwp_fail(cp);
643 fork_fail(cp);
644 if (cp->p_dtrace_helpers != NULL) {
646 (*dtrace_helpers_cleanup)(cp);
648 rctl_set_free(cp->p_rctls);
654 mutex_enter(&cp->p_lock);
655 tk = cp->p_task;
656 task_detach(cp);
657 ASSERT(cp->p_pool->pool_ref > 0);
658 atomic_dec_32(&cp->p_pool->pool_ref);
659 mutex_exit(&cp->p_lock);
661 disown_proc(p, cp);
662 pid_exit(cp, tk);
680 fork_fail(proc_t *cp)
682 uf_info_t *fip = P_FINFO(cp);
685 sigdelq(cp, NULL, 0);
688 upcount_dec(crgetruid(cp->p_cred), crgetzoneid(cp->p_cred));
694 crfree(cp->p_cred);
701 if (cp->p_exec)
702 VN_RELE(cp->p_exec);
703 if (cp->p_execdir)
704 VN_RELE(cp->p_execdir);
707 if (PROC_IS_BRANDED(cp)) {
708 brand_clearbrand(cp, B_TRUE);
943 proc_t *pp, *cp;
994 cp = kmem_cache_alloc(process_cache, KM_SLEEP);
995 bzero(cp, sizeof (proc_t));
1000 mutex_init(&cp->p_splock, NULL, MUTEX_DEFAULT, NULL);
1001 mutex_init(&cp->p_crlock, NULL, MUTEX_DEFAULT, NULL);
1002 mutex_init(&cp->p_pflock, NULL, MUTEX_DEFAULT, NULL);
1004 mutex_init(&cp->p_ldtlock, NULL, MUTEX_DEFAULT, NULL);
1006 mutex_init(&cp->p_maplock, NULL, MUTEX_DEFAULT, NULL);
1007 cp->p_stat = SIDL;
1008 cp->p_mstart = gethrtime();
1009 cp->p_as = &kas;
1015 cp->p_zone = pp->p_zone;
1016 cp->p_t1_lgrpid = LGRP_NONE;
1017 cp->p_tr_lgrpid = LGRP_NONE;
1019 if ((newpid = pid_allocate(cp, pid, PID_ALLOC_PROC)) == -1) {
1028 cp->p_exec = pp->p_exec;
1029 cp->p_execdir = pp->p_execdir;
1032 if (cp->p_exec) {
1033 VN_HOLD(cp->p_exec);
1039 if (VOP_OPEN(&cp->p_exec, FREAD, CRED(), NULL) != 0) {
1040 VN_RELE(cp->p_exec);
1041 cp->p_exec = NULLVP;
1042 cp->p_execdir = NULLVP;
1046 if (cp->p_execdir)
1047 VN_HOLD(cp->p_execdir);
1077 cp->p_next = practive;
1078 practive->p_prev = cp;
1079 practive = cp;
1081 cp->p_ignore = pp->p_ignore;
1082 cp->p_siginfo = pp->p_siginfo;
1083 cp->p_flag = pp->p_flag & (SJCTL|SNOWAIT|SNOCD);
1084 cp->p_sessp = pp->p_sessp;
1086 cp->p_brand = pp->p_brand;
1088 BROP(pp)->b_copy_procdata(cp, pp);
1089 cp->p_bssbase = pp->p_bssbase;
1090 cp->p_brkbase = pp->p_brkbase;
1091 cp->p_brksize = pp->p_brksize;
1092 cp->p_brkpageszc = pp->p_brkpageszc;
1093 cp->p_stksize = pp->p_stksize;
1094 cp->p_stkpageszc = pp->p_stkpageszc;
1095 cp->p_stkprot = pp->p_stkprot;
1096 cp->p_datprot = pp->p_datprot;
1097 cp->p_usrstack = pp->p_usrstack;
1098 cp->p_model = pp->p_model;
1099 cp->p_ppid = pp->p_pid;
1100 cp->p_ancpid = pp->p_pid;
1101 cp->p_portcnt = pp->p_portcnt;
1106 cp->p_secflags = pp->p_secflags;
1111 avl_create(&cp->p_warea, wa_compare, sizeof (struct watched_area),
1117 cp->p_stk_ctl = pp->p_stk_ctl;
1118 cp->p_fsz_ctl = pp->p_fsz_ctl;
1119 cp->p_vmem_ctl = pp->p_vmem_ctl;
1120 cp->p_fno_ctl = pp->p_fno_ctl;
1127 cp->p_sibling = pp->p_child;
1129 pp->p_child->p_psibling = cp;
1131 cp->p_parent = pp;
1132 pp->p_child = cp;
1134 cp->p_child_ns = NULL;
1135 cp->p_sibling_ns = NULL;
1137 cp->p_nextorph = pp->p_orphan;
1138 cp->p_nextofkin = pp;
1139 pp->p_orphan = cp;
1144 cp->p_prof = pp->p_prof;
1145 cp->p_rprof_cyclic = CYCLIC_NONE;
1153 cp->p_pool = pool_default;
1154 cp->p_flag |= SSYS;
1156 cp->p_pool = pp->p_pool;
1158 atomic_inc_32(&cp->p_pool->pool_ref);
1165 mutex_enter(&cp->p_lock);
1167 task_attach(task0p, cp);
1169 task_attach(pp->p_task, cp);
1170 mutex_exit(&cp->p_lock);
1173 avl_create(&cp->p_ct_held, contract_compar, sizeof (contract_t),
1179 if (audit_active) /* copy audit data to cp */
1180 audit_newproc(cp);
1182 crhold(cp->p_cred = cr);
1207 uarea = PTOU(cp);
1209 flist_fork(P_FINFO(pp), P_FINFO(cp));
1220 cp->p_proc_flag |= pp->p_proc_flag & (P_PR_TRACE|P_PR_FORK);
1221 cp->p_sigmask = pp->p_sigmask;
1222 cp->p_fltmask = pp->p_fltmask;
1224 sigemptyset(&cp->p_sigmask);
1225 premptyset(&cp->p_fltmask);
1234 cp->p_flag |= pp->p_flag & (SMSFORK|SMSACCT);
1239 cp->p_fixalignment = pp->p_fixalignment;
1241 *cpp = cp;
1247 mutex_destroy(&cp->p_crlock);
1248 mutex_destroy(&cp->p_pflock);
1250 mutex_destroy(&cp->p_ldtlock);
1253 proc_entry_free(cp->p_pidp);
1254 (void) pid_rele(cp->p_pidp);
1256 kmem_cache_free(process_cache, cp);
1412 proc_t *cp;
1419 cp = prfind(pid);
1420 if (cp == NULL || cp->p_parent != pp) {
1432 mutex_enter(&cp->p_lock);
1434 if (!(cp->p_flag & SVFORK)) {
1438 mutex_exit(&cp->p_lock);
1442 mutex_exit(&cp->p_lock);