Lines Matching defs:p
329 proc_t *p;
337 p = procdir[pidp->pid_prslot].pe_proc;
338 if (zoneid == ALL_ZONES || p->p_zone->zone_id == zoneid)
339 return (p);
373 proc_t *p = pidp->pid_pglink;
375 if (zoneid == ALL_ZONES || pgid == 0 || p == NULL ||
376 p->p_zone->zone_id == zoneid)
377 return (p);
407 sprtrylock_proc(proc_t *p)
409 ASSERT(MUTEX_HELD(&p->p_lock));
412 if (p->p_stat == SIDL || p->p_stat == SZOMB ||
413 (p->p_flag & (SSYS | SEXITING | SEXITLWPS))) {
417 if (p->p_proc_flag & P_PR_LOCK)
420 p->p_proc_flag |= P_PR_LOCK;
430 sprwaitlock_proc(proc_t *p)
434 ASSERT(MUTEX_HELD(&p->p_lock));
435 ASSERT(p->p_proc_flag & P_PR_LOCK);
438 * p_lock is persistent, but p itself is not -- it could
439 * vanish during cv_wait(). Load p->p_lock now so we can
440 * drop it after cv_wait() without referencing p.
442 mp = &p->p_lock;
443 cv_wait(&pr_pid_cv[p->p_slot], mp);
456 proc_t *p;
461 if ((p = prfind_zone(pid, zoneid)) == NULL) {
465 mutex_enter(&p->p_lock);
469 return (p);
471 ret = sprtrylock_proc(p);
473 mutex_exit(&p->p_lock);
478 sprwaitlock_proc(p);
480 return (p);
496 sprlock_proc(proc_t *p)
498 ASSERT(MUTEX_HELD(&p->p_lock));
500 while (p->p_proc_flag & P_PR_LOCK) {
501 cv_wait(&pr_pid_cv[p->p_slot], &p->p_lock);
504 p->p_proc_flag |= P_PR_LOCK;
508 sprunlock(proc_t *p)
511 mutex_exit(&p->p_lock);
515 ASSERT(p->p_proc_flag & P_PR_LOCK);
516 ASSERT(MUTEX_HELD(&p->p_lock));
518 cv_signal(&pr_pid_cv[p->p_slot]);
519 p->p_proc_flag &= ~P_PR_LOCK;
520 mutex_exit(&p->p_lock);