[BACK]Return to subr_pool.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / kern

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/sys/kern/subr_pool.c between version 1.158.2.2 and 1.170

version 1.158.2.2, 2009/05/04 08:13:48 version 1.170, 2008/10/15 08:13:17
Line 2528  pool_cache_put_slow(pool_cache_cpu_t *cc
Line 2528  pool_cache_put_slow(pool_cache_cpu_t *cc
         KASSERT(cc->cc_previous->pcg_avail == cc->cc_previous->pcg_size);          KASSERT(cc->cc_previous->pcg_avail == cc->cc_previous->pcg_size);
   
         pc = cc->cc_cache;          pc = cc->cc_cache;
         pcg = NULL;  
         cc->cc_misses++;          cc->cc_misses++;
   
         /*  
          * If there are no empty groups in the cache then allocate one  
          * while still unlocked.  
          */  
         if (__predict_false(pc->pc_emptygroups == NULL)) {  
                 if (__predict_true(!pool_cache_disable)) {  
                         pcg = pool_get(pc->pc_pcgpool, PR_NOWAIT);  
                 }  
                 if (__predict_true(pcg != NULL)) {  
                         pcg->pcg_avail = 0;  
                         pcg->pcg_size = pc->pc_pcgsize;  
                 }  
         }  
   
         /* Lock the cache. */          /* Lock the cache. */
         if (__predict_false(!mutex_tryenter(&pc->pc_lock))) {          if (__predict_false(!mutex_tryenter(&pc->pc_lock))) {
                 ncsw = curlwp->l_ncsw;                  ncsw = curlwp->l_ncsw;
Line 2557  pool_cache_put_slow(pool_cache_cpu_t *cc
Line 2542  pool_cache_put_slow(pool_cache_cpu_t *cc
                  */                   */
                 if (__predict_false(curlwp->l_ncsw != ncsw)) {                  if (__predict_false(curlwp->l_ncsw != ncsw)) {
                         mutex_exit(&pc->pc_lock);                          mutex_exit(&pc->pc_lock);
                         if (pcg != NULL) {  
                                 pool_put(pc->pc_pcgpool, pcg);  
                         }  
                         return true;                          return true;
                 }                  }
         }          }
   
         /* If there are no empty groups in the cache then allocate one. */          /* If there are no empty groups in the cache then allocate one. */
         if (pcg == NULL && pc->pc_emptygroups != NULL) {          if (__predict_false((pcg = pc->pc_emptygroups) == NULL)) {
                 pcg = pc->pc_emptygroups;                  if (__predict_true(!pool_cache_disable)) {
                           pcg = pool_get(pc->pc_pcgpool, PR_NOWAIT);
                   }
                   if (__predict_true(pcg != NULL)) {
                           pcg->pcg_avail = 0;
                           pcg->pcg_size = pc->pc_pcgsize;
                   }
           } else {
                 pc->pc_emptygroups = pcg->pcg_next;                  pc->pc_emptygroups = pcg->pcg_next;
                 pc->pc_nempty--;                  pc->pc_nempty--;
         }          }
Line 2621  pool_cache_put_paddr(pool_cache_t pc, vo
Line 2610  pool_cache_put_paddr(pool_cache_t pc, vo
         pcg_t *pcg;          pcg_t *pcg;
         int s;          int s;
   
         KASSERT(object != NULL);  
         FREECHECK_IN(&pc->pc_freecheck, object);          FREECHECK_IN(&pc->pc_freecheck, object);
   
         /* Lock out interrupts and disable preemption. */          /* Lock out interrupts and disable preemption. */

Legend:
Removed from v.1.158.2.2  
changed lines
  Added in v.1.170

CVSweb <webmaster@jp.NetBSD.org>