[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.175 and 1.177

version 1.175, 2009/10/08 21:54:45 version 1.177, 2009/10/20 17:24:22
Line 2289  pool_cache_invalidate_groups(pool_cache_
Line 2289  pool_cache_invalidate_groups(pool_cache_
  *   *
  *      Invalidate a pool cache (destruct and release all of the   *      Invalidate a pool cache (destruct and release all of the
  *      cached objects).  Does not reclaim objects from the pool.   *      cached objects).  Does not reclaim objects from the pool.
    *
    *      Note: For pool caches that provide constructed objects, there
    *      is an assumption that another level of synchronization is occurring
    *      between the input to the constructor and the cache invalidation.
  */   */
 void  void
 pool_cache_invalidate(pool_cache_t pc)  pool_cache_invalidate(pool_cache_t pc)
 {  {
         pcg_t *full, *empty, *part;          pcg_t *full, *empty, *part;
           uint64_t where;
   
           if (ncpu < 2 || !mp_online) {
                   /*
                    * We might be called early enough in the boot process
                    * for the CPU data structures to not be fully initialized.
                    * In this case, simply gather the local CPU's cache now
                    * since it will be the only one running.
                    */
                   pool_cache_xcall(pc);
           } else {
                   /*
                    * Gather all of the CPU-specific caches into the
                    * global cache.
                    */
                   where = xc_broadcast(0, (xcfunc_t)pool_cache_xcall, pc, NULL);
                   xc_wait(where);
           }
   
         mutex_enter(&pc->pc_lock);          mutex_enter(&pc->pc_lock);
         full = pc->pc_fullgroups;          full = pc->pc_fullgroups;
Line 2313  pool_cache_invalidate(pool_cache_t pc)
Line 2335  pool_cache_invalidate(pool_cache_t pc)
 }  }
   
 /*  /*
  * pool_cache_invalidate_local:  
  *  
  *      Invalidate all local ('current CPU') cached objects in  
  *      pool cache.  
  *      It is caller's responsibility to ensure that no operation is  
  *      taking place on this pool cache while doing the local invalidation.  
  */  
 void  
 pool_cache_invalidate_local(pool_cache_t pc)  
 {  
         pool_cache_invalidate_cpu(pc, curcpu()->ci_index);  
 }  
   
 /*  
  * pool_cache_invalidate_cpu:   * pool_cache_invalidate_cpu:
  *   *
  *      Invalidate all CPU-bound cached objects in pool cache, the CPU being   *      Invalidate all CPU-bound cached objects in pool cache, the CPU being

Legend:
Removed from v.1.175  
changed lines
  Added in v.1.177

CVSweb <webmaster@jp.NetBSD.org>