[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.184 and 1.186.2.1

version 1.184, 2010/05/12 03:43:46 version 1.186.2.1, 2011/06/06 09:09:35
Line 54  __KERNEL_RCSID(0, "$NetBSD$");
Line 54  __KERNEL_RCSID(0, "$NetBSD$");
 #include <sys/cpu.h>  #include <sys/cpu.h>
 #include <sys/atomic.h>  #include <sys/atomic.h>
   
 #include <uvm/uvm.h>  #include <uvm/uvm_extern.h>
   #ifdef DIAGNOSTIC
   #include <uvm/uvm_km.h> /* uvm_km_va_drain */
   #endif
   
 /*  /*
  * Pool resource management utility.   * Pool resource management utility.
Line 179  static struct pool pcg_large_pool;
Line 182  static struct pool pcg_large_pool;
 static struct pool cache_pool;  static struct pool cache_pool;
 static struct pool cache_cpu_pool;  static struct pool cache_cpu_pool;
   
   pool_cache_t pnbuf_cache;       /* pathname buffer cache */
   
 /* List of all caches. */  /* List of all caches. */
 TAILQ_HEAD(,pool_cache) pool_cache_head =  TAILQ_HEAD(,pool_cache) pool_cache_head =
     TAILQ_HEAD_INITIALIZER(pool_cache_head);      TAILQ_HEAD_INITIALIZER(pool_cache_head);
Line 992  pool_get(struct pool *pp, int flags)
Line 997  pool_get(struct pool *pp, int flags)
         if (pp->pr_itemsperpage == 0)          if (pp->pr_itemsperpage == 0)
                 panic("pool_get: pool '%s': pr_itemsperpage is zero, "                  panic("pool_get: pool '%s': pr_itemsperpage is zero, "
                     "pool not initialized?", pp->pr_wchan);                      "pool not initialized?", pp->pr_wchan);
         if ((cpu_intr_p() || cpu_softintr_p()) && pp->pr_ipl == IPL_NONE)          if ((cpu_intr_p() || cpu_softintr_p()) && pp->pr_ipl == IPL_NONE &&
               !cold && panicstr == NULL)
                 panic("pool '%s' is IPL_NONE, but called from "                  panic("pool '%s' is IPL_NONE, but called from "
                     "interrupt context\n", pp->pr_wchan);                      "interrupt context\n", pp->pr_wchan);
 #endif  #endif
Line 1744  pool_drain_start(struct pool **ppp, uint
Line 1750  pool_drain_start(struct pool **ppp, uint
         }          }
 }  }
   
 void  bool
 pool_drain_end(struct pool *pp, uint64_t where)  pool_drain_end(struct pool *pp, uint64_t where)
 {  {
           bool reclaimed;
   
         if (pp == NULL)          if (pp == NULL)
                 return;                  return false;
   
         KASSERT(pp->pr_refcnt > 0);          KASSERT(pp->pr_refcnt > 0);
   
Line 1758  pool_drain_end(struct pool *pp, uint64_t
Line 1765  pool_drain_end(struct pool *pp, uint64_t
                 xc_wait(where);                  xc_wait(where);
   
         /* Drain the cache (if any) and pool.. */          /* Drain the cache (if any) and pool.. */
         pool_reclaim(pp);          reclaimed = pool_reclaim(pp);
   
         /* Finally, unlock the pool. */          /* Finally, unlock the pool. */
         mutex_enter(&pool_head_lock);          mutex_enter(&pool_head_lock);
         pp->pr_refcnt--;          pp->pr_refcnt--;
         cv_broadcast(&pool_busy);          cv_broadcast(&pool_busy);
         mutex_exit(&pool_head_lock);          mutex_exit(&pool_head_lock);
   
           return reclaimed;
 }  }
   
 /*  /*
Line 2529  pool_cache_get_paddr(pool_cache_t pc, in
Line 2538  pool_cache_get_paddr(pool_cache_t pc, in
         int s;          int s;
   
         KASSERTMSG((!cpu_intr_p() && !cpu_softintr_p()) ||          KASSERTMSG((!cpu_intr_p() && !cpu_softintr_p()) ||
             (pc->pc_pool.pr_ipl != IPL_NONE || cold),              (pc->pc_pool.pr_ipl != IPL_NONE || cold || panicstr != NULL),
             ("pool '%s' is IPL_NONE, but called from interrupt context\n",              ("pool '%s' is IPL_NONE, but called from interrupt context\n",
             pc->pc_pool.pr_wchan));              pc->pc_pool.pr_wchan));
   

Legend:
Removed from v.1.184  
changed lines
  Added in v.1.186.2.1

CVSweb <webmaster@jp.NetBSD.org>