Print this page
5045 use atomic_{inc,dec}_* instead of atomic_add_*


 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         /*