[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.102 and 1.103

version 1.102, 2005/10/02 17:29:31 version 1.103, 2005/10/15 21:22:46
Line 1717  pool_print1(struct pool *pp, const char 
Line 1717  pool_print1(struct pool *pp, const char 
         }          }
   
         LIST_FOREACH(pc, &pp->pr_cachelist, pc_poollist) {          LIST_FOREACH(pc, &pp->pr_cachelist, pc_poollist) {
                   (*pr)("\tcache %p\n", pc);
                 (*pr)("\t    hits %lu misses %lu ngroups %lu nitems %lu\n",                  (*pr)("\t    hits %lu misses %lu ngroups %lu nitems %lu\n",
                     pc->pc_hits, pc->pc_misses, pc->pc_ngroups, pc->pc_nitems);                      pc->pc_hits, pc->pc_misses, pc->pc_ngroups, pc->pc_nitems);
                 (*pr)("\t    full groups:\n");                  (*pr)("\t    full groups:\n");
                 LIST_FOREACH(pcg, &pc->pc_fullgroups, pcg_list)                  LIST_FOREACH(pcg, &pc->pc_fullgroups, pcg_list) {
                         PR_GROUPLIST(pcg);                          PR_GROUPLIST(pcg);
                   }
                 (*pr)("\t    partial groups:\n");                  (*pr)("\t    partial groups:\n");
                 LIST_FOREACH(pcg, &pc->pc_partgroups, pcg_list)                  LIST_FOREACH(pcg, &pc->pc_partgroups, pcg_list) {
                         PR_GROUPLIST(pcg);                          PR_GROUPLIST(pcg);
                   }
                 (*pr)("\t    empty groups:\n");                  (*pr)("\t    empty groups:\n");
                 LIST_FOREACH(pcg, &pc->pc_emptygroups, pcg_list)                  LIST_FOREACH(pcg, &pc->pc_emptygroups, pcg_list) {
                         PR_GROUPLIST(pcg);                          PR_GROUPLIST(pcg);
                   }
         }          }
 #undef PR_GROUPLIST  #undef PR_GROUPLIST
   
Line 2069  pool_do_cache_invalidate(struct pool_cac
Line 2073  pool_do_cache_invalidate(struct pool_cac
 {  {
         struct pool_cache_group *pcg, *npcg;          struct pool_cache_group *pcg, *npcg;
         void *object;          void *object;
         boolean_t firstpass = TRUE;  
   
         LOCK_ASSERT(simple_lock_held(&pc->pc_slock));          LOCK_ASSERT(simple_lock_held(&pc->pc_slock));
         LOCK_ASSERT(simple_lock_held(&pc->pc_pool->pr_slock));          LOCK_ASSERT(simple_lock_held(&pc->pc_pool->pr_slock));
   
         for (pcg = LIST_FIRST(&pc->pc_partgroups); pcg != NULL;          for (pcg = LIST_FIRST(&pc->pc_fullgroups); pcg != NULL; pcg = npcg) {
              pcg = npcg) {  
   loop:
                 npcg = LIST_NEXT(pcg, pcg_list);                  npcg = LIST_NEXT(pcg, pcg_list);
                 if (npcg == NULL && firstpass) {  
                         npcg = LIST_FIRST(&pc->pc_fullgroups);  
                         firstpass = FALSE;  
                 }  
                 while (pcg->pcg_avail != 0) {                  while (pcg->pcg_avail != 0) {
                         pc->pc_nitems--;                          pc->pc_nitems--;
                         object = pcg_get(pcg, NULL);                          object = pcg_get(pcg, NULL);
Line 2088  pool_do_cache_invalidate(struct pool_cac
Line 2088  pool_do_cache_invalidate(struct pool_cac
                                 (*pc->pc_dtor)(pc->pc_arg, object);                                  (*pc->pc_dtor)(pc->pc_arg, object);
                         pool_do_put(pc->pc_pool, object, pq);                          pool_do_put(pc->pc_pool, object, pq);
                 }                  }
                   pc->pc_ngroups--;
                 LIST_REMOVE(pcg, pcg_list);                  LIST_REMOVE(pcg, pcg_list);
                 LIST_INSERT_HEAD(pcgl, pcg, pcg_list);                  LIST_INSERT_HEAD(pcgl, pcg, pcg_list);
         }          }
           pcg = LIST_FIRST(&pc->pc_partgroups);
           if (pcg != NULL) {
                   goto loop;
           }
   
           KASSERT(LIST_EMPTY(&pc->pc_partgroups));
           KASSERT(LIST_EMPTY(&pc->pc_fullgroups));
           KASSERT(pc->pc_nitems == 0);
 }  }
   
 /*  /*

Legend:
Removed from v.1.102  
changed lines
  Added in v.1.103

CVSweb <webmaster@jp.NetBSD.org>