/*
- * Copyright (C) 1996-2017 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.
*/
/*
- * 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>
void *
MemPoolMalloc::allocate()
{
- void *obj = NULL;
+ void *obj = nullptr;
if (!freelist.empty()) {
obj = freelist.top();
freelist.pop();
}
/* 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->chunks_alloc += 0;
- stats->chunks_inuse += 0;
- stats->chunks_partial += 0;
- stats->chunks_free += 0;
-
- 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.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.items_alloc += meter.alloc.currentLevel();
+ stats.items_inuse += meter.inuse.currentLevel();
+ stats.items_idle += meter.idle.currentLevel();
+
+ stats.overhead += sizeof(MemPoolMalloc) + strlen(objectType()) + 1;
return meter.inuse.currentLevel();
}