[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.178 and 1.179

version 1.178, 2009/12/30 18:57:17 version 1.179, 2010/01/02 15:20:39
Line 234  int pool_logsize = POOL_LOGSIZE;
Line 234  int pool_logsize = POOL_LOGSIZE;
 static inline void  static inline void
 pr_log(struct pool *pp, void *v, int action, const char *file, long line)  pr_log(struct pool *pp, void *v, int action, const char *file, long line)
 {  {
         int n = pp->pr_curlogentry;          int n;
         struct pool_log *pl;          struct pool_log *pl;
   
         if ((pp->pr_roflags & PR_LOGGING) == 0)          if ((pp->pr_roflags & PR_LOGGING) == 0)
                 return;                  return;
   
           if (pp->pr_log == NULL) {
                   if (kmem_map != NULL)
                           pp->pr_log = malloc(
                                   pool_logsize * sizeof(struct pool_log),
                                   M_TEMP, M_NOWAIT | M_ZERO);
                   if (pp->pr_log == NULL)
                           return;
                   pp->pr_curlogentry = 0;
                   pp->pr_logsize = pool_logsize;
           }
   
         /*          /*
          * Fill in the current entry. Wrap around and overwrite           * Fill in the current entry. Wrap around and overwrite
          * the oldest entry if necessary.           * the oldest entry if necessary.
          */           */
           n = pp->pr_curlogentry;
         pl = &pp->pr_log[n];          pl = &pp->pr_log[n];
         pl->pl_file = file;          pl->pl_file = file;
         pl->pl_line = line;          pl->pl_line = line;
Line 261  pr_printlog(struct pool *pp, struct pool
Line 273  pr_printlog(struct pool *pp, struct pool
         int i = pp->pr_logsize;          int i = pp->pr_logsize;
         int n = pp->pr_curlogentry;          int n = pp->pr_curlogentry;
   
         if ((pp->pr_roflags & PR_LOGGING) == 0)          if (pp->pr_log == NULL)
                 return;                  return;
   
         /*          /*
Line 593  pool_subsystem_init(void)
Line 605  pool_subsystem_init(void)
         struct pool_allocator *pa;          struct pool_allocator *pa;
   
         mutex_init(&pool_head_lock, MUTEX_DEFAULT, IPL_NONE);          mutex_init(&pool_head_lock, MUTEX_DEFAULT, IPL_NONE);
           mutex_init(&pool_allocator_lock, MUTEX_DEFAULT, IPL_NONE);
         cv_init(&pool_busy, "poolbusy");          cv_init(&pool_busy, "poolbusy");
   
         while ((pa = SLIST_FIRST(&pa_deferinitq)) != NULL) {          while ((pa = SLIST_FIRST(&pa_deferinitq)) != NULL) {
Line 607  pool_subsystem_init(void)
Line 620  pool_subsystem_init(void)
   
         pool_init(&cache_cpu_pool, sizeof(pool_cache_cpu_t), coherency_unit,          pool_init(&cache_cpu_pool, sizeof(pool_cache_cpu_t), coherency_unit,
             0, 0, "pcachecpu", &pool_allocator_nointr, IPL_NONE);              0, 0, "pcachecpu", &pool_allocator_nointr, IPL_NONE);
   
         mutex_init(&pool_allocator_lock, MUTEX_DEFAULT, IPL_NONE);  
 }  }
   
 /*  /*
Line 793  pool_init(struct pool *pp, size_t size, 
Line 804  pool_init(struct pool *pp, size_t size, 
         pp->pr_nidle = 0;          pp->pr_nidle = 0;
         pp->pr_refcnt = 0;          pp->pr_refcnt = 0;
   
 #ifdef POOL_DIAGNOSTIC          pp->pr_log = NULL;
         if (flags & PR_LOGGING) {  
                 if (kmem_map == NULL ||  
                     (pp->pr_log = malloc(pool_logsize * sizeof(struct pool_log),  
                      M_TEMP, M_NOWAIT)) == NULL)  
                         pp->pr_roflags &= ~PR_LOGGING;  
                 pp->pr_curlogentry = 0;  
                 pp->pr_logsize = pool_logsize;  
         }  
 #endif  
   
         pp->pr_entered_file = NULL;          pp->pr_entered_file = NULL;
         pp->pr_entered_line = 0;          pp->pr_entered_line = 0;
Line 928  pool_destroy(struct pool *pp)
Line 930  pool_destroy(struct pool *pp)
         pr_pagelist_free(pp, &pq);          pr_pagelist_free(pp, &pq);
   
 #ifdef POOL_DIAGNOSTIC  #ifdef POOL_DIAGNOSTIC
         if ((pp->pr_roflags & PR_LOGGING) != 0)          if (pp->pr_log != NULL) {
                 free(pp->pr_log, M_TEMP);                  free(pp->pr_log, M_TEMP);
                   pp->pr_log = NULL;
           }
 #endif  #endif
   
         cv_destroy(&pp->pr_cv);          cv_destroy(&pp->pr_cv);

Legend:
Removed from v.1.178  
changed lines
  Added in v.1.179

CVSweb <webmaster@jp.NetBSD.org>