580 VN_RELE(execdir_vp);
581
582 /*
583 * Release held contracts.
584 */
585 contract_exit(p);
586
587 /*
588 * Depart our encapsulating process contract.
589 */
590 if ((p->p_flag & SSYS) == 0) {
591 ASSERT(p->p_ct_process);
592 contract_process_exit(p->p_ct_process, p, rv);
593 }
594
595 /*
596 * Remove pool association, and block if requested by pool_do_bind.
597 */
598 mutex_enter(&p->p_lock);
599 ASSERT(p->p_pool->pool_ref > 0);
600 atomic_add_32(&p->p_pool->pool_ref, -1);
601 p->p_pool = pool_default;
602 /*
603 * Now that our address space has been freed and all other threads
604 * in this process have exited, set the PEXITED pool flag. This
605 * tells the pools subsystems to ignore this process if it was
606 * requested to rebind this process to a new pool.
607 */
608 p->p_poolflag |= PEXITED;
609 pool_barrier_exit();
610 mutex_exit(&p->p_lock);
611
612 mutex_enter(&pidlock);
613
614 /*
615 * Delete this process from the newstate list of its parent. We
616 * will put it in the right place in the sigcld in the end.
617 */
618 delete_ns(p->p_parent, p);
619
620 /*
|
580 VN_RELE(execdir_vp);
581
582 /*
583 * Release held contracts.
584 */
585 contract_exit(p);
586
587 /*
588 * Depart our encapsulating process contract.
589 */
590 if ((p->p_flag & SSYS) == 0) {
591 ASSERT(p->p_ct_process);
592 contract_process_exit(p->p_ct_process, p, rv);
593 }
594
595 /*
596 * Remove pool association, and block if requested by pool_do_bind.
597 */
598 mutex_enter(&p->p_lock);
599 ASSERT(p->p_pool->pool_ref > 0);
600 atomic_dec_32(&p->p_pool->pool_ref);
601 p->p_pool = pool_default;
602 /*
603 * Now that our address space has been freed and all other threads
604 * in this process have exited, set the PEXITED pool flag. This
605 * tells the pools subsystems to ignore this process if it was
606 * requested to rebind this process to a new pool.
607 */
608 p->p_poolflag |= PEXITED;
609 pool_barrier_exit();
610 mutex_exit(&p->p_lock);
611
612 mutex_enter(&pidlock);
613
614 /*
615 * Delete this process from the newstate list of its parent. We
616 * will put it in the right place in the sigcld in the end.
617 */
618 delete_ns(p->p_parent, p);
619
620 /*
|