]> git.ipfire.org Git - thirdparty/squid.git/blobdiff - src/mem/PoolMalloc.cc
Source Format Enforcement (#1234)
[thirdparty/squid.git] / src / mem / PoolMalloc.cc
index 025aa41a77f774ab2688a0571989a2148fcfd608..f5601c78ada8597b83f0a9ab6d47fd2349244590 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 1996-2015 The Squid Software Foundation and contributors
+ * Copyright (C) 1996-2023 The Squid Software Foundation and contributors
  *
  * Squid software is distributed under GPLv2+ license and includes
  * contributions from numerous individuals and organizations.
@@ -7,12 +7,12 @@
  */
 
 /*
- * DEBUG: section 63    Low Level Memory Pool Management
  * AUTHOR: Alex Rousskov, Andres Kroonmaa, Robert Collins, Henrik Nordstrom
  */
 
 #include "squid.h"
 #include "mem/PoolMalloc.h"
+#include "mem/Stats.h"
 
 #include <cassert>
 #include <cstring>
@@ -22,71 +22,68 @@ extern time_t squid_curtime;
 void *
 MemPoolMalloc::allocate()
 {
-    void *obj = NULL;
+    void *obj = nullptr;
     if (!freelist.empty()) {
         obj = freelist.top();
         freelist.pop();
     }
     if (obj) {
-        memMeterDec(meter.idle);
+        --meter.idle;
         ++saved_calls;
     } else {
         if (doZero)
             obj = xcalloc(1, obj_size);
         else
             obj = xmalloc(obj_size);
-        memMeterInc(meter.alloc);
+        ++meter.alloc;
     }
-    memMeterInc(meter.inuse);
+    ++meter.inuse;
     return obj;
 }
 
 void
 MemPoolMalloc::deallocate(void *obj, bool aggressive)
 {
-    memMeterDec(meter.inuse);
+    --meter.inuse;
     if (aggressive) {
         xfree(obj);
-        memMeterDec(meter.alloc);
+        --meter.alloc;
     } else {
         if (doZero)
             memset(obj, 0, obj_size);
-        memMeterInc(meter.idle);
+        ++meter.idle;
         freelist.push(obj);
     }
 }
 
 /* TODO extract common logic to MemAllocate */
-int
-MemPoolMalloc::getStats(MemPoolStats * stats, int accumulate)
+size_t
+MemPoolMalloc::getStats(Mem::PoolStats &stats)
 {
-    if (!accumulate)    /* need skip memset for GlobalStats accumulation */
-        memset(stats, 0, sizeof(MemPoolStats));
-
-    stats->pool = this;
-    stats->label = objectType();
-    stats->meter = &meter;
-    stats->obj_size = obj_size;
-    stats->chunk_capacity = 0;
+    stats.pool = this;
+    stats.label = objectType();
+    stats.meter = &meter;
+    stats.obj_size = obj_size;
+    stats.chunk_capacity = 0;
 
-    stats->chunks_alloc += 0;
-    stats->chunks_inuse += 0;
-    stats->chunks_partial += 0;
-    stats->chunks_free += 0;
+    stats.chunks_alloc += 0;
+    stats.chunks_inuse += 0;
+    stats.chunks_partial += 0;
+    stats.chunks_free += 0;
 
-    stats->items_alloc += meter.alloc.level;
-    stats->items_inuse += meter.inuse.level;
-    stats->items_idle += meter.idle.level;
+    stats.items_alloc += meter.alloc.currentLevel();
+    stats.items_inuse += meter.inuse.currentLevel();
+    stats.items_idle += meter.idle.currentLevel();
 
-    stats->overhead += sizeof(MemPoolMalloc) + strlen(objectType()) + 1;
+    stats.overhead += sizeof(MemPoolMalloc) + strlen(objectType()) + 1;
 
-    return meter.inuse.level;
+    return meter.inuse.currentLevel();
 }
 
 int
 MemPoolMalloc::getInUseCount()
 {
-    return meter.inuse.level;
+    return meter.inuse.currentLevel();
 }
 
 MemPoolMalloc::MemPoolMalloc(char const *aLabel, size_t aSize) : MemImplementingAllocator(aLabel, aSize)
@@ -95,7 +92,7 @@ MemPoolMalloc::MemPoolMalloc(char const *aLabel, size_t aSize) : MemImplementing
 
 MemPoolMalloc::~MemPoolMalloc()
 {
-    assert(meter.inuse.level == 0);
+    assert(meter.inuse.currentLevel() == 0);
     clean(0);
 }
 
@@ -111,8 +108,8 @@ MemPoolMalloc::clean(time_t)
     while (!freelist.empty()) {
         void *obj = freelist.top();
         freelist.pop();
-        memMeterDec(meter.idle);
-        memMeterDec(meter.alloc);
+        --meter.idle;
+        --meter.alloc;
         xfree(obj);
     }
 }