Lines Matching refs:p

157 	proc_t *p = ttoproc(t);
158 user_t *up = PTOU(p);
168 zcmn_err(p->p_zone->zone_id, CE_WARN,
172 if (!INGLOBALZONE(p)) {
175 p->p_zone->zone_name, p->p_pid, reason_buf);
184 closeall(P_FINFO(p));
191 mutex_enter(&p->p_lock);
192 prbarrier(p);
194 p->p_flag &= ~(SKILLED | SEXTKILLED | SEXITING | SDOCORE);
201 sigemptyset(&p->p_sig);
202 sigemptyset(&p->p_extsig);
204 sigdelq(p, t, 0);
205 sigdelq(p, NULL, 0);
207 if (p->p_killsqp) {
208 siginfofree(p->p_killsqp);
209 p->p_killsqp = NULL;
239 VN_HOLD(p->p_zone->zone_rootvp);
241 up->u_rdir = p->p_zone->zone_rootvp;
243 VN_HOLD(p->p_zone->zone_rootvp);
245 up->u_cdir = p->p_zone->zone_rootvp;
252 mutex_exit(&p->p_lock);
260 ASSERT(p == curproc);
268 err = exec_init(p->p_zone->zone_initname, NULL);
273 zcmn_err(p->p_zone->zone_id, CE_WARN,
276 if (!INGLOBALZONE(p)) {
279 p->p_zone->zone_name, p->p_pid, err);
314 proc_is_exiting(proc_t *p)
316 mutex_enter(&p->p_lock);
317 prbarrier(p);
318 p->p_flag |= SEXITING;
319 mutex_exit(&p->p_lock);
332 proc_t *p = ttoproc(t);
333 zone_t *z = p->p_zone;
354 proc_is_exiting(p);
358 mutex_enter(&p->p_lock);
359 if (p->p_ttime > 0) {
364 (void) task_cpu_time_incr(p->p_task, p->p_ttime);
365 p->p_ttime = 0;
367 mutex_exit(&p->p_lock);
377 if (PROC_IS_BRANDED(p)) {
379 brand_clearbrand(p, B_FALSE);
389 if (p->p_pid == z->zone_proc_initpid) {
421 evaporate = (p->p_flag & SSYS) || ((p->p_flag & SVFORK) &&
429 if (p->p_door_list)
435 if (p->p_pagep)
441 if (p->p_aio)
447 if (p->p_lcp != NULL)
453 if (p->p_dtrace_helpers != NULL) {
461 if (p->p_sigfd != NULL) {
467 if (p->p_itimer != NULL)
470 if ((tmp_id = p->p_alarmid) != 0) {
471 p->p_alarmid = 0;
481 if (p->p_rprof_cyclic != CYCLIC_NONE) {
483 cyclic_remove(p->p_rprof_cyclic);
487 mutex_enter(&p->p_lock);
492 if (p->p_dtrace_probes) {
494 dtrace_fasttrap_exit_ptr(p);
497 while ((tmp_id = p->p_itimerid) != 0) {
498 p->p_itimerid = 0;
499 mutex_exit(&p->p_lock);
501 mutex_enter(&p->p_lock);
514 * acquired p->p_lock (to manipulate p_tlist at least).
516 prbarrier(p);
518 sigfillset(&p->p_ignore);
519 sigemptyset(&p->p_siginfo);
520 sigemptyset(&p->p_sig);
521 sigemptyset(&p->p_extsig);
524 sigemptyset(&p->p_sigmask);
525 sigdelq(p, t, 0);
528 p->p_flag &= ~(SKILLED | SEXTKILLED);
535 ASSERT(p->p_lwpcnt == 1 && p->p_zombcnt == 0);
537 lwp_hash_out(p, t->t_tid);
538 prexit(p);
540 p->p_lwpcnt = 0;
541 p->p_tlist = NULL;
542 sigqfree(p);
544 p->p_mterm = gethrtime();
546 exec_vp = p->p_exec;
547 execdir_vp = p->p_execdir;
548 p->p_exec = NULLVP;
549 p->p_execdir = NULLVP;
550 mutex_exit(&p->p_lock);
552 pr_free_watched_pages(p);
554 closeall(P_FINFO(p));
557 ASSERT(p == curproc);
561 if (p->p_utraps != NULL)
562 utrap_free(p);
564 if (p->p_semacct) /* IPC semaphore exit */
565 semexit(p);
569 exacct_commit_proc(p, rv);
600 contract_exit(p);
605 if ((p->p_flag & SSYS) == 0) {
606 ASSERT(p->p_ct_process);
607 contract_process_exit(p->p_ct_process, p, rv);
613 mutex_enter(&p->p_lock);
614 ASSERT(p->p_pool->pool_ref > 0);
615 atomic_dec_32(&p->p_pool->pool_ref);
616 p->p_pool = pool_default;
623 p->p_poolflag |= PEXITED;
625 mutex_exit(&p->p_lock);
633 delete_ns(p->p_parent, p);
639 if ((q = p->p_orphan) != NULL && p != proc_init) {
641 proc_t *nokp = p->p_nextofkin;
650 nokp->p_orphan = p->p_orphan;
651 p->p_orphan = NULL;
658 if ((q = p->p_child) != NULL && p != proc_init) {
666 pgdetach(p);
708 p->p_child = NULL;
709 ASSERT(p->p_child_ns == NULL);
712 TRACE_1(TR_FAC_PROC, TR_PROC_EXIT, "proc_exit: %p", p);
714 mutex_enter(&p->p_lock);
731 exacct_update_task_mstate(p);
733 hrutime = mstate_aggr_state(p, LMS_USER);
734 hrstime = mstate_aggr_state(p, LMS_SYSTEM);
735 p->p_utime = (clock_t)NSEC_TO_TICK(hrutime) + p->p_cutime;
736 p->p_stime = (clock_t)NSEC_TO_TICK(hrstime) + p->p_cstime;
738 p->p_acct[LMS_USER] += p->p_cacct[LMS_USER];
739 p->p_acct[LMS_SYSTEM] += p->p_cacct[LMS_SYSTEM];
740 p->p_acct[LMS_TRAP] += p->p_cacct[LMS_TRAP];
741 p->p_acct[LMS_TFAULT] += p->p_cacct[LMS_TFAULT];
742 p->p_acct[LMS_DFAULT] += p->p_cacct[LMS_DFAULT];
743 p->p_acct[LMS_KFAULT] += p->p_cacct[LMS_KFAULT];
744 p->p_acct[LMS_USER_LOCK] += p->p_cacct[LMS_USER_LOCK];
745 p->p_acct[LMS_SLEEP] += p->p_cacct[LMS_SLEEP];
746 p->p_acct[LMS_WAIT_CPU] += p->p_cacct[LMS_WAIT_CPU];
747 p->p_acct[LMS_STOPPED] += p->p_cacct[LMS_STOPPED];
749 p->p_ru.minflt += p->p_cru.minflt;
750 p->p_ru.majflt += p->p_cru.majflt;
751 p->p_ru.nswap += p->p_cru.nswap;
752 p->p_ru.inblock += p->p_cru.inblock;
753 p->p_ru.oublock += p->p_cru.oublock;
754 p->p_ru.msgsnd += p->p_cru.msgsnd;
755 p->p_ru.msgrcv += p->p_cru.msgrcv;
756 p->p_ru.nsignals += p->p_cru.nsignals;
757 p->p_ru.nvcsw += p->p_cru.nvcsw;
758 p->p_ru.nivcsw += p->p_cru.nivcsw;
759 p->p_ru.sysc += p->p_cru.sysc;
760 p->p_ru.ioch += p->p_cru.ioch;
762 p->p_stat = SZOMB;
763 p->p_proc_flag &= ~P_PR_PTRACE;
764 p->p_wdata = what;
765 p->p_wcode = (char)why;
767 cdir = PTOU(p)->u_cdir;
768 rdir = PTOU(p)->u_rdir;
769 cwd = PTOU(p)->u_cwd;
771 ASSERT(cdir != NULL || p->p_parent == &p0);
776 rctl_set_free(p->p_rctls);
787 tk = p->p_task;
789 mutex_enter(&p->p_zone->zone_nlwps_lock);
792 p->p_zone->zone_nlwps--;
793 mutex_exit(&p->p_zone->zone_nlwps_lock);
798 * We free the memory below, after dropping p->p_lock.
800 lwpdir = p->p_lwpdir;
801 lwpdir_sz = p->p_lwpdir_sz;
802 tidhash = p->p_tidhash;
803 tidhash_sz = p->p_tidhash_sz;
804 ret_tidhash = p->p_ret_tidhash;
805 p->p_lwpdir = NULL;
806 p->p_lwpfree = NULL;
807 p->p_lwpdir_sz = 0;
808 p->p_tidhash = NULL;
809 p->p_tidhash_sz = 0;
810 p->p_ret_tidhash = NULL;
822 if (p->p_pctx) {
824 exitpctx(p);
827 freepctx(p, 0);
843 if (p != t->t_procp->p_zone->zone_zsched)
848 mutex_exit(&p->p_lock);
850 p->p_pidflag &= ~CLDPEND;
851 sigcld(p, sqp);
857 cv_broadcast(&p->p_srwchan_cv);
858 freeproc(p);
1178 proc_detach(proc_t *p)
1184 q = p->p_parent;
1190 delete_ns(q, p);
1192 if (q->p_child == p) {
1193 q->p_child = p->p_sibling;
1201 if (p->p_sibling) {
1202 p->p_sibling->p_psibling = p->p_psibling;
1205 if (p->p_psibling) {
1206 p->p_psibling->p_sibling = p->p_sibling;
1214 freeproc(proc_t *p)
1219 ASSERT(p->p_stat == SZOMB);
1220 ASSERT(p->p_tlist == NULL);
1223 sigdelq(p, NULL, 0);
1224 if (p->p_killsqp) {
1225 siginfofree(p->p_killsqp);
1226 p->p_killsqp = NULL;
1229 prfree(p); /* inform /proc */
1235 if (p == proc_init)
1244 upcount_dec(crgetruid(p->p_cred), crgetzoneid(p->p_cred));
1245 crfree(p->p_cred);
1246 if (p->p_corefile != NULL) {
1247 corectl_path_rele(p->p_corefile);
1248 p->p_corefile = NULL;
1250 if (p->p_content != NULL) {
1251 corectl_content_rele(p->p_content);
1252 p->p_content = NULL;
1255 if (p->p_nextofkin && !((p->p_nextofkin->p_flag & SNOWAIT) ||
1256 (PTOU(p->p_nextofkin)->u_signal[SIGCLD - 1] == SIG_IGN))) {
1262 p->p_nextofkin->p_cutime += p->p_utime;
1263 p->p_nextofkin->p_cstime += p->p_stime;
1265 p->p_nextofkin->p_cacct[LMS_USER] += p->p_acct[LMS_USER];
1266 p->p_nextofkin->p_cacct[LMS_SYSTEM] += p->p_acct[LMS_SYSTEM];
1267 p->p_nextofkin->p_cacct[LMS_TRAP] += p->p_acct[LMS_TRAP];
1268 p->p_nextofkin->p_cacct[LMS_TFAULT] += p->p_acct[LMS_TFAULT];
1269 p->p_nextofkin->p_cacct[LMS_DFAULT] += p->p_acct[LMS_DFAULT];
1270 p->p_nextofkin->p_cacct[LMS_KFAULT] += p->p_acct[LMS_KFAULT];
1271 p->p_nextofkin->p_cacct[LMS_USER_LOCK]
1272 += p->p_acct[LMS_USER_LOCK];
1273 p->p_nextofkin->p_cacct[LMS_SLEEP] += p->p_acct[LMS_SLEEP];
1274 p->p_nextofkin->p_cacct[LMS_WAIT_CPU]
1275 += p->p_acct[LMS_WAIT_CPU];
1276 p->p_nextofkin->p_cacct[LMS_STOPPED] += p->p_acct[LMS_STOPPED];
1278 p->p_nextofkin->p_cru.minflt += p->p_ru.minflt;
1279 p->p_nextofkin->p_cru.majflt += p->p_ru.majflt;
1280 p->p_nextofkin->p_cru.nswap += p->p_ru.nswap;
1281 p->p_nextofkin->p_cru.inblock += p->p_ru.inblock;
1282 p->p_nextofkin->p_cru.oublock += p->p_ru.oublock;
1283 p->p_nextofkin->p_cru.msgsnd += p->p_ru.msgsnd;
1284 p->p_nextofkin->p_cru.msgrcv += p->p_ru.msgrcv;
1285 p->p_nextofkin->p_cru.nsignals += p->p_ru.nsignals;
1286 p->p_nextofkin->p_cru.nvcsw += p->p_ru.nvcsw;
1287 p->p_nextofkin->p_cru.nivcsw += p->p_ru.nivcsw;
1288 p->p_nextofkin->p_cru.sysc += p->p_ru.sysc;
1289 p->p_nextofkin->p_cru.ioch += p->p_ru.ioch;
1293 q = p->p_nextofkin;
1294 if (q && q->p_orphan == p)
1295 q->p_orphan = p->p_nextorph;
1298 if (q->p_nextorph == p)
1300 ASSERT(q && q->p_nextorph == p);
1301 q->p_nextorph = p->p_nextorph;
1308 mutex_enter(&p->p_lock);
1309 tk = p->p_task;
1310 task_detach(p);
1311 mutex_exit(&p->p_lock);
1313 proc_detach(p);
1314 pid_exit(p, tk); /* frees pid and proc structure */