--------------------- PatchSet 10436 Date: 2008/01/26 12:03:29 Author: adri Branch: s27_adri Tag: (none) Log: Shuffle out the rest of the core memory stuff into libmem/ rather than src/ . This lets me (properly) use the mem buffer pools in libbuf/ to reduce malloc calls. Members: libhttp/HttpHeader.c:1.1.2.6->1.1.2.7 libhttp/HttpHeaderEntry.c:1.1.2.2->1.1.2.3 libmem/Makefile.am:1.1.2.2->1.1.2.3 libmem/MemPool.h:1.1.2.2->1.1.2.3 libmem/mem.c:1.1.2.1->1.1.2.2 libmem/mem.h:1.1.2.2->1.1.2.3 src/main.c:1.80.2.1.4.7->1.80.2.1.4.8 src/mem.c:1.31.8.4->1.31.8.5 src/protos.h:1.146.2.4.4.43->1.146.2.4.4.44 Index: squid/libhttp/HttpHeader.c =================================================================== RCS file: /cvsroot/squid-sf//squid/libhttp/Attic/HttpHeader.c,v retrieving revision 1.1.2.6 retrieving revision 1.1.2.7 diff -u -r1.1.2.6 -r1.1.2.7 --- squid/libhttp/HttpHeader.c 9 Jan 2008 09:52:43 -0000 1.1.2.6 +++ squid/libhttp/HttpHeader.c 26 Jan 2008 12:03:31 -0000 1.1.2.7 @@ -1,6 +1,6 @@ /* - * $Id: HttpHeader.c,v 1.1.2.6 2008/01/09 09:52:43 adri Exp $ + * $Id: HttpHeader.c,v 1.1.2.7 2008/01/26 12:03:31 adri Exp $ */ #include @@ -12,10 +12,12 @@ #include "../include/util.h" #include "../include/Array.h" +#include "../include/Stack.h" #include "../libcore/varargs.h" #include "../libcore/debug.h" #include "../libcore/tools.h" +#include "../libmem/MemPool.h" #include "../libmem/mem.h" #include "../libbuf/buf.h" Index: squid/libhttp/HttpHeaderEntry.c =================================================================== RCS file: /cvsroot/squid-sf//squid/libhttp/Attic/HttpHeaderEntry.c,v retrieving revision 1.1.2.2 retrieving revision 1.1.2.3 diff -u -r1.1.2.2 -r1.1.2.3 --- squid/libhttp/HttpHeaderEntry.c 6 Jan 2008 09:56:00 -0000 1.1.2.2 +++ squid/libhttp/HttpHeaderEntry.c 26 Jan 2008 12:03:32 -0000 1.1.2.3 @@ -1,6 +1,6 @@ /* - * $Id: HttpHeaderEntry.c,v 1.1.2.2 2008/01/06 09:56:00 adri Exp $ + * $Id: HttpHeaderEntry.c,v 1.1.2.3 2008/01/26 12:03:32 adri Exp $ */ #include @@ -17,8 +17,8 @@ #include "../libcore/varargs.h" #include "../libcore/debug.h" #include "../libcore/tools.h" -#include "../libmem/mem.h" #include "../libmem/MemPool.h" +#include "../libmem/mem.h" #include "../libbuf/buf.h" #include "../libbuf/String.h" Index: squid/libmem/Makefile.am =================================================================== RCS file: /cvsroot/squid-sf//squid/libmem/Attic/Makefile.am,v retrieving revision 1.1.2.2 retrieving revision 1.1.2.3 diff -u -r1.1.2.2 -r1.1.2.3 --- squid/libmem/Makefile.am 6 Dec 2007 08:10:26 -0000 1.1.2.2 +++ squid/libmem/Makefile.am 26 Jan 2008 12:03:32 -0000 1.1.2.3 @@ -1,14 +1,16 @@ ## Process this file with automake to produce Makefile.in # -# $Id: Makefile.am,v 1.1.2.2 2007/12/06 08:10:26 adri Exp $ +# $Id: Makefile.am,v 1.1.2.3 2008/01/26 12:03:32 adri Exp $ # libmem_a_SOURCES = \ MemPool.c \ + mem.c \ memstr.c libmem_a_LIBADD = \ MemPool.o \ + mem.o \ memstr.o noinst_LIBRARIES = \ Index: squid/libmem/MemPool.h =================================================================== RCS file: /cvsroot/squid-sf//squid/libmem/Attic/MemPool.h,v retrieving revision 1.1.2.2 retrieving revision 1.1.2.3 diff -u -r1.1.2.2 -r1.1.2.3 --- squid/libmem/MemPool.h 17 Dec 2007 08:17:48 -0000 1.1.2.2 +++ squid/libmem/MemPool.h 26 Jan 2008 12:03:32 -0000 1.1.2.3 @@ -73,6 +73,7 @@ extern int memPoolInUseCount(const MemPool * pool); extern size_t memPoolInUseSize(const MemPool * pool); extern int memPoolUsedCount(const MemPool * pool); +extern size_t memTotalAllocated(void); /* MemMeter */ extern void memMeterSyncHWater(MemMeter * m); Index: squid/libmem/mem.c =================================================================== RCS file: /cvsroot/squid-sf//squid/libmem/Attic/mem.c,v retrieving revision 1.1.2.1 retrieving revision 1.1.2.2 diff -u -r1.1.2.1 -r1.1.2.2 --- squid/libmem/mem.c 6 Dec 2007 06:34:38 -0000 1.1.2.1 +++ squid/libmem/mem.c 26 Jan 2008 12:03:32 -0000 1.1.2.2 @@ -1,6 +1,6 @@ /* - * $Id: mem.c,v 1.1.2.1 2007/12/06 06:34:38 adri Exp $ + * $Id: mem.c,v 1.1.2.2 2008/01/26 12:03:32 adri Exp $ * * DEBUG: section 13 High Level Memory Pool Management * AUTHOR: Harvest Derived @@ -33,103 +33,32 @@ * */ -#include "squid.h" +#include +#include +#include +#include +#include + +#include "../include/config.h" +#include "../include/util.h" +#include "../libcore/valgrind.h" +#include "../libcore/tools.h" +#include "../libcore/varargs.h" +#include "../libcore/debug.h" -/* module globals */ - -static MemPool *MemPools[MEM_MAX]; - -/* string pools */ -#define mem_str_pool_count 3 -static const struct { - const char *name; - size_t obj_size; -} StrPoolsAttrs[mem_str_pool_count] = { - - { - "Short Strings", 36, - }, /* to fit rfc1123 and similar */ - { - "Medium Strings", 128, - }, /* to fit most urls */ - { - "Long Strings", 512 - } /* other */ -}; -static struct { - MemPool *pool; -} StrPools[mem_str_pool_count]; -static MemMeter StrCountMeter; -static MemMeter StrVolumeMeter; - -static MemMeter HugeBufCountMeter; -static MemMeter HugeBufVolumeMeter; +#include "../include/Stack.h" -/* local routines */ +#include "MemPool.h" +#include "mem.h" -static void -memStringStats(StoreEntry * sentry) -{ - const char *pfmt = "%-20s\t %d\t %d\n"; - int i; - int pooled_count = 0; - size_t pooled_volume = 0; - /* heading */ - storeAppendPrintf(sentry, - "String Pool\t Impact\t\t\n" - " \t (%%strings)\t (%%volume)\n"); - /* table body */ - for (i = 0; i < mem_str_pool_count; i++) { - const MemPool *pool = StrPools[i].pool; - const int plevel = pool->meter.inuse.level; - storeAppendPrintf(sentry, pfmt, - pool->label, - xpercentInt(plevel, StrCountMeter.level), - xpercentInt(plevel * pool->obj_size, StrVolumeMeter.level)); - pooled_count += plevel; - pooled_volume += plevel * pool->obj_size; - } - /* malloc strings */ - storeAppendPrintf(sentry, pfmt, - "Other Strings", - xpercentInt(StrCountMeter.level - pooled_count, StrCountMeter.level), - xpercentInt(StrVolumeMeter.level - pooled_volume, StrVolumeMeter.level)); - storeAppendPrintf(sentry, "\n"); -} +/* module globals */ -static void -memBufStats(StoreEntry * sentry) -{ - storeAppendPrintf(sentry, "Large buffers: %d (%d KB)\n", - (int) HugeBufCountMeter.level, - (int) HugeBufVolumeMeter.level / 1024); -} +MemPool *MemPools[MEM_MAX]; -static void -memStats(StoreEntry * sentry) -{ - storeBuffer(sentry); - memReport(sentry); - memStringStats(sentry); - memBufStats(sentry); - storeBufferFlush(sentry); -#if WITH_VALGRIND - if (RUNNING_ON_VALGRIND) { - long int leaked = 0, dubious = 0, reachable = 0, suppressed = 0; - storeAppendPrintf(sentry, "Valgrind Report:\n"); - storeAppendPrintf(sentry, "Type\tAmount\n"); - debug(13, 1) ("Asking valgrind for memleaks\n"); - VALGRIND_DO_LEAK_CHECK; - debug(13, 1) ("Getting valgrind statistics\n"); - VALGRIND_COUNT_LEAKS(leaked, dubious, reachable, suppressed); - storeAppendPrintf(sentry, "Leaked\t%ld\n", leaked); - storeAppendPrintf(sentry, "Dubious\t%ld\n", dubious); - storeAppendPrintf(sentry, "Reachable\t%ld\n", reachable); - storeAppendPrintf(sentry, "Suppressed\t%ld\n", suppressed); - } -#endif -} +/* string pools */ +MemMeter HugeBufCountMeter; +MemMeter HugeBufVolumeMeter; /* * public routines @@ -146,7 +75,7 @@ MemPools[type] = memPoolCreate(name, size); } -static void +void memDataNonZero(mem_type type) { memPoolNonZero(MemPools[type]); @@ -167,45 +96,6 @@ memPoolFree(MemPools[type], p); } -/* allocate a variable size buffer using best-fit pool */ -void * -memAllocString(size_t net_size, size_t * gross_size) -{ - int i; - MemPool *pool = NULL; - assert(gross_size); - for (i = 0; i < mem_str_pool_count; i++) { - if (net_size <= StrPoolsAttrs[i].obj_size) { - pool = StrPools[i].pool; - break; - } - } - *gross_size = pool ? pool->obj_size : net_size; - assert(*gross_size >= net_size); - memMeterInc(StrCountMeter); - memMeterAdd(StrVolumeMeter, *gross_size); - return pool ? memPoolAlloc(pool) : xcalloc(1, net_size); -} - -/* free buffer allocated with memAllocString() */ -void -memFreeString(size_t size, void *buf) -{ - int i; - MemPool *pool = NULL; - assert(size && buf); - for (i = 0; i < mem_str_pool_count; i++) { - if (size <= StrPoolsAttrs[i].obj_size) { - assert(size == StrPoolsAttrs[i].obj_size); - pool = StrPools[i].pool; - break; - } - } - memMeterDec(StrCountMeter); - memMeterDel(StrVolumeMeter, size); - pool ? memPoolFree(pool, buf) : xfree(buf); -} - /* Find the best fit MEM_X_BUF type */ static mem_type memFindBufSizeType(size_t net_size, size_t * gross_size) @@ -285,11 +175,9 @@ } } - void memInit(void) { - int i; memInitModule(); /* set all pointers to null */ memset(MemPools, '\0', sizeof(MemPools)); @@ -311,70 +199,6 @@ memDataNonZero(MEM_32K_BUF); memDataInit(MEM_64K_BUF, "64K Buffer", 65536, 10); memDataNonZero(MEM_64K_BUF); - memDataInit(MEM_STORE_CLIENT_BUF, "Store Client Buffer", STORE_CLIENT_BUF_SZ, 0); - memDataNonZero(MEM_STORE_CLIENT_BUF); - memDataInit(MEM_ACL, "acl", sizeof(acl), 0); - memDataInit(MEM_ACL_DENY_INFO_LIST, "acl_deny_info_list", - sizeof(acl_deny_info_list), 0); - memDataInit(MEM_ACL_IP_DATA, "acl_ip_data", sizeof(acl_ip_data), 0); - memDataInit(MEM_ACL_LIST, "acl_list", sizeof(acl_list), 0); - memDataInit(MEM_ACL_NAME_LIST, "acl_name_list", sizeof(acl_name_list), 0); -#if USE_SSL - memDataInit(MEM_ACL_CERT_DATA, "acl_cert_data", sizeof(acl_cert_data), 0); -#endif - memDataInit(MEM_ACL_TIME_DATA, "acl_time_data", sizeof(acl_time_data), 0); - memDataInit(MEM_ACL_REQUEST_TYPE, "acl_request_type", sizeof(acl_request_type), 0); - memDataInit(MEM_AUTH_USER_T, "auth_user_t", - sizeof(auth_user_t), 0); - memDataInit(MEM_AUTH_USER_HASH, "auth_user_hash_pointer", - sizeof(auth_user_hash_pointer), 0); - memDataInit(MEM_ACL_PROXY_AUTH_MATCH, "acl_proxy_auth_match_cache", - sizeof(acl_proxy_auth_match_cache), 0); - memDataInit(MEM_ACL_USER_DATA, "acl_user_data", - sizeof(acl_user_data), 0); -#if USE_CACHE_DIGESTS - memDataInit(MEM_CACHE_DIGEST, "CacheDigest", sizeof(CacheDigest), 0); -#endif - memDataInit(MEM_LINK_LIST, "link_list", sizeof(link_list), 10); - memDataInit(MEM_DLINK_NODE, "dlink_node", sizeof(dlink_node), 10); - memDataInit(MEM_DREAD_CTRL, "dread_ctrl", sizeof(dread_ctrl), 0); - memDataInit(MEM_DWRITE_Q, "dwrite_q", sizeof(dwrite_q), 0); - memDataInit(MEM_FWD_SERVER, "FwdServer", sizeof(FwdServer), 0); - memDataInit(MEM_HTTP_REPLY, "HttpReply", sizeof(HttpReply), 0); - memDataInit(MEM_HTTP_HDR_ENTRY, "HttpHeaderEntry", sizeof(HttpHeaderEntry), 0); - memDataInit(MEM_HTTP_HDR_CC, "HttpHdrCc", sizeof(HttpHdrCc), 0); - memDataInit(MEM_HTTP_HDR_RANGE_SPEC, "HttpHdrRangeSpec", sizeof(HttpHdrRangeSpec), 0); - memDataInit(MEM_HTTP_HDR_RANGE, "HttpHdrRange", sizeof(HttpHdrRange), 0); - memDataInit(MEM_HTTP_HDR_CONTENT_RANGE, "HttpHdrContRange", sizeof(HttpHdrContRange), 0); - memDataInit(MEM_INTLIST, "intlist", sizeof(intlist), 0); - memDataInit(MEM_MEMOBJECT, "MemObject", sizeof(MemObject), - Squid_MaxFD >> 3); - memDataInit(MEM_MEM_NODE, "mem_node", sizeof(mem_node), 0); - memDataNonZero(MEM_MEM_NODE); - memDataInit(MEM_NETDBENTRY, "netdbEntry", sizeof(netdbEntry), 0); - memDataInit(MEM_NET_DB_NAME, "net_db_name", sizeof(net_db_name), 0); - memDataInit(MEM_RELIST, "relist", sizeof(relist), 0); - memDataInit(MEM_REQUEST_T, "request_t", sizeof(request_t), - Squid_MaxFD >> 3); - memDataInit(MEM_STOREENTRY, "StoreEntry", sizeof(StoreEntry), 0); - memDataInit(MEM_WORDLIST, "wordlist", sizeof(wordlist), 0); - memDataInit(MEM_CLIENT_INFO, "ClientInfo", sizeof(ClientInfo), 0); - memDataInit(MEM_MD5_DIGEST, "MD5 digest", MD5_DIGEST_CHARS, 0); - memDataInit(MEM_HELPER_REQUEST, "helper_request", - sizeof(helper_request), 0); - memDataInit(MEM_HELPER_STATEFUL_REQUEST, "helper_stateful_request", - sizeof(helper_stateful_request), 0); - memDataInit(MEM_TLV, "storeSwapTLV", sizeof(tlv), 0); - memDataInit(MEM_SWAP_LOG_DATA, "storeSwapLogData", sizeof(storeSwapLogData), 0); - - /* init string pools */ - for (i = 0; i < mem_str_pool_count; i++) { - StrPools[i].pool = memPoolCreate(StrPoolsAttrs[i].name, StrPoolsAttrs[i].obj_size); - memPoolNonZero(StrPools[i].pool); - } - cachemgrRegister("mem", - "Memory Utilization", - memStats, 0, 1); } /* Index: squid/libmem/mem.h =================================================================== RCS file: /cvsroot/squid-sf//squid/libmem/Attic/mem.h,v retrieving revision 1.1.2.2 retrieving revision 1.1.2.3 diff -u -r1.1.2.2 -r1.1.2.3 --- squid/libmem/mem.h 6 Jan 2008 09:19:52 -0000 1.1.2.2 +++ squid/libmem/mem.h 26 Jan 2008 12:03:32 -0000 1.1.2.3 @@ -63,10 +63,25 @@ MEM_MAX } mem_type; -/* XXX this is sitting in src/mem.c rather than here for now .. */ -extern void * memAllocate(mem_type); -extern void memFree(void *, int); +extern MemMeter HugeBufCountMeter; +extern MemMeter HugeBufVolumeMeter; +extern MemPool * MemPools[MEM_MAX]; +typedef void FREE(void *); +extern void memDataInit(mem_type type, const char *name, size_t size, int max_pages_notused); +extern void * memAllocate(mem_type type); +extern void memFree(void *p, int type); +extern void * memAllocBuf(size_t net_size, size_t * gross_size); +extern void * memReallocBuf(void *oldbuf, size_t net_size, size_t * gross_size); +extern void memFreeBuf(size_t size, void *buf); +extern void memInit(void); +extern void memCheckInit(void); +extern void memClean(void); +extern int memInUse(mem_type type); +extern FREE * memFreeBufFunc(size_t size); +extern void memDataNonZero(mem_type type); +extern void memFree4K(void *); +extern void memFree8K(void *); #endif Index: squid/src/main.c =================================================================== RCS file: /cvsroot/squid-sf//squid/src/main.c,v retrieving revision 1.80.2.1.4.7 retrieving revision 1.80.2.1.4.8 diff -u -r1.80.2.1.4.7 -r1.80.2.1.4.8 --- squid/src/main.c 21 Jan 2008 03:50:24 -0000 1.80.2.1.4.7 +++ squid/src/main.c 26 Jan 2008 12:03:29 -0000 1.80.2.1.4.8 @@ -1,6 +1,6 @@ /* - * $Id: main.c,v 1.80.2.1.4.7 2008/01/21 03:50:24 adri Exp $ + * $Id: main.c,v 1.80.2.1.4.8 2008/01/26 12:03:29 adri Exp $ * * DEBUG: section 1 Startup and Main Loop * AUTHOR: Harvest Derived @@ -722,6 +722,7 @@ /* Initialise the buffer code early on so things like Strings can be used */ memInit(); + memSquidInit(); memConfigure(1, 0, 0); StringMapSetup(); memStringInit(); Index: squid/src/mem.c =================================================================== RCS file: /cvsroot/squid-sf//squid/src/mem.c,v retrieving revision 1.31.8.4 retrieving revision 1.31.8.5 diff -u -r1.31.8.4 -r1.31.8.5 --- squid/src/mem.c 5 Jan 2008 09:42:40 -0000 1.31.8.4 +++ squid/src/mem.c 26 Jan 2008 12:03:30 -0000 1.31.8.5 @@ -1,6 +1,6 @@ /* - * $Id: mem.c,v 1.31.8.4 2008/01/05 09:42:40 adri Exp $ + * $Id: mem.c,v 1.31.8.5 2008/01/26 12:03:30 adri Exp $ * * DEBUG: section 13 High Level Memory Pool Management * AUTHOR: Harvest Derived @@ -35,15 +35,6 @@ #include "squid.h" -/* module globals */ - -static MemPool *MemPools[MEM_MAX]; - -/* string pools */ - -static MemMeter HugeBufCountMeter; -static MemMeter HugeBufVolumeMeter; - /* local routines */ static void @@ -131,151 +122,15 @@ } -/* - * public routines - */ - -/* - * we have a limit on _total_ amount of idle memory so we ignore - * max_pages for now - */ void -memDataInit(mem_type type, const char *name, size_t size, int max_pages_notused) +memSquidInit(void) { - assert(name && size); - MemPools[type] = memPoolCreate(name, size); -} -static void -memDataNonZero(mem_type type) -{ - memPoolNonZero(MemPools[type]); -} - - -/* find appropriate pool and use it (pools always init buffer with 0s) */ -void * -memAllocate(mem_type type) -{ - return memPoolAlloc(MemPools[type]); -} - -/* give memory back to the pool */ -void -memFree(void *p, int type) -{ - memPoolFree(MemPools[type], p); -} - -/* Find the best fit MEM_X_BUF type */ -static mem_type -memFindBufSizeType(size_t net_size, size_t * gross_size) -{ - mem_type type; - size_t size; - if (net_size <= 2 * 1024) { - type = MEM_2K_BUF; - size = 2 * 1024; - } else if (net_size <= 4 * 1024) { - type = MEM_4K_BUF; - size = 4 * 1024; - } else if (net_size <= 8 * 1024) { - type = MEM_8K_BUF; - size = 8 * 1024; - } else if (net_size <= 16 * 1024) { - type = MEM_16K_BUF; - size = 16 * 1024; - } else if (net_size <= 32 * 1024) { - type = MEM_32K_BUF; - size = 32 * 1024; - } else if (net_size <= 64 * 1024) { - type = MEM_64K_BUF; - size = 64 * 1024; - } else { - type = MEM_NONE; - size = net_size; - } - if (gross_size) - *gross_size = size; - return type; -} - -/* allocate a variable size buffer using best-fit pool */ -void * -memAllocBuf(size_t net_size, size_t * gross_size) -{ - mem_type type = memFindBufSizeType(net_size, gross_size); - if (type != MEM_NONE) - return memAllocate(type); - else { - memMeterInc(HugeBufCountMeter); - memMeterAdd(HugeBufVolumeMeter, *gross_size); - return xcalloc(1, net_size); - } -} - -/* resize a variable sized buffer using best-fit pool */ -void * -memReallocBuf(void *oldbuf, size_t net_size, size_t * gross_size) -{ - /* XXX This can be optimized on very large buffers to use realloc() */ - size_t new_gross_size; - void *newbuf = memAllocBuf(net_size, &new_gross_size); - if (oldbuf) { - int data_size = *gross_size; - if (data_size > net_size) - data_size = net_size; - memcpy(newbuf, oldbuf, data_size); - memFreeBuf(*gross_size, oldbuf); - } - *gross_size = new_gross_size; - return newbuf; -} - -/* free buffer allocated with memAllocBuf() */ -void -memFreeBuf(size_t size, void *buf) -{ - mem_type type = memFindBufSizeType(size, NULL); - if (type != MEM_NONE) - memFree(buf, type); - else { - xfree(buf); - memMeterDec(HugeBufCountMeter); - memMeterDel(HugeBufVolumeMeter, size); - } -} - - -void -memInit(void) -{ - memInitModule(); - /* set all pointers to null */ - memset(MemPools, '\0', sizeof(MemPools)); - /* - * it does not hurt much to have a lot of pools since sizeof(MemPool) is - * small; someday we will figure out what to do with all the entries here - * that are never used or used only once; perhaps we should simply use - * malloc() for those? @?@ - */ - memDataInit(MEM_2K_BUF, "2K Buffer", 2048, 10); - memDataNonZero(MEM_2K_BUF); - memDataInit(MEM_4K_BUF, "4K Buffer", 4096, 10); - memDataNonZero(MEM_4K_BUF); - memDataInit(MEM_8K_BUF, "8K Buffer", 8192, 10); - memDataNonZero(MEM_8K_BUF); - memDataInit(MEM_16K_BUF, "16K Buffer", 16384, 10); - memDataNonZero(MEM_16K_BUF); - memDataInit(MEM_32K_BUF, "32K Buffer", 32768, 10); - memDataNonZero(MEM_32K_BUF); - memDataInit(MEM_64K_BUF, "64K Buffer", 65536, 10); - memDataNonZero(MEM_64K_BUF); memDataInit(MEM_STORE_CLIENT_BUF, "Store Client Buffer", STORE_CLIENT_BUF_SZ, 0); memDataNonZero(MEM_STORE_CLIENT_BUF); memDataInit(MEM_ACL, "acl", sizeof(acl), 0); memDataInit(MEM_ACL_DENY_INFO_LIST, "acl_deny_info_list", - sizeof(acl_deny_info_list), 0); + sizeof(acl_deny_info_list), 0); memDataInit(MEM_ACL_IP_DATA, "acl_ip_data", sizeof(acl_ip_data), 0); memDataInit(MEM_ACL_LIST, "acl_list", sizeof(acl_list), 0); memDataInit(MEM_ACL_NAME_LIST, "acl_name_list", sizeof(acl_name_list), 0); @@ -285,13 +140,13 @@ memDataInit(MEM_ACL_TIME_DATA, "acl_time_data", sizeof(acl_time_data), 0); memDataInit(MEM_ACL_REQUEST_TYPE, "acl_request_type", sizeof(acl_request_type), 0); memDataInit(MEM_AUTH_USER_T, "auth_user_t", - sizeof(auth_user_t), 0); + sizeof(auth_user_t), 0); memDataInit(MEM_AUTH_USER_HASH, "auth_user_hash_pointer", - sizeof(auth_user_hash_pointer), 0); + sizeof(auth_user_hash_pointer), 0); memDataInit(MEM_ACL_PROXY_AUTH_MATCH, "acl_proxy_auth_match_cache", - sizeof(acl_proxy_auth_match_cache), 0); + sizeof(acl_proxy_auth_match_cache), 0); memDataInit(MEM_ACL_USER_DATA, "acl_user_data", - sizeof(acl_user_data), 0); + sizeof(acl_user_data), 0); #if USE_CACHE_DIGESTS memDataInit(MEM_CACHE_DIGEST, "CacheDigest", sizeof(CacheDigest), 0); #endif @@ -308,22 +163,22 @@ memDataInit(MEM_HTTP_HDR_CONTENT_RANGE, "HttpHdrContRange", sizeof(HttpHdrContRange), 0); memDataInit(MEM_INTLIST, "intlist", sizeof(intlist), 0); memDataInit(MEM_MEMOBJECT, "MemObject", sizeof(MemObject), - Squid_MaxFD >> 3); + Squid_MaxFD >> 3); memDataInit(MEM_MEM_NODE, "mem_node", sizeof(mem_node), 0); memDataNonZero(MEM_MEM_NODE); memDataInit(MEM_NETDBENTRY, "netdbEntry", sizeof(netdbEntry), 0); memDataInit(MEM_NET_DB_NAME, "net_db_name", sizeof(net_db_name), 0); memDataInit(MEM_RELIST, "relist", sizeof(relist), 0); memDataInit(MEM_REQUEST_T, "request_t", sizeof(request_t), - Squid_MaxFD >> 3); + Squid_MaxFD >> 3); memDataInit(MEM_STOREENTRY, "StoreEntry", sizeof(StoreEntry), 0); memDataInit(MEM_WORDLIST, "wordlist", sizeof(wordlist), 0); memDataInit(MEM_CLIENT_INFO, "ClientInfo", sizeof(ClientInfo), 0); memDataInit(MEM_MD5_DIGEST, "MD5 digest", SQUID_MD5_DIGEST_LENGTH, 0); memDataInit(MEM_HELPER_REQUEST, "helper_request", - sizeof(helper_request), 0); + sizeof(helper_request), 0); memDataInit(MEM_HELPER_STATEFUL_REQUEST, "helper_stateful_request", - sizeof(helper_stateful_request), 0); + sizeof(helper_stateful_request), 0); memDataInit(MEM_TLV, "storeSwapTLV", sizeof(tlv), 0); memDataInit(MEM_SWAP_LOG_DATA, "storeSwapLogData", sizeof(storeSwapLogData), 0); @@ -332,94 +187,3 @@ memStats, 0, 1); cachemgrRegister("buf", "Buffer Utilisation", memBufTStats, 0, 1); } - -/* - * Test that all entries are initialized - */ -void -memCheckInit(void) -{ - mem_type t; - for (t = MEM_NONE, t++; t < MEM_MAX; t++) { - if (MEM_DONTFREE == t) - continue; - /* - * If you hit this assertion, then you forgot to add a - * memDataInit() line for type 't'. - */ - assert(MemPools[t]); - } -} - -void -memClean(void) -{ - memCleanModule(); -} - -int -memInUse(mem_type type) -{ - return memPoolInUseCount(MemPools[type]); -} - -/* ick */ - -static void -memFree2K(void *p) -{ - memFree(p, MEM_2K_BUF); -} - -void -memFree4K(void *p) -{ - memFree(p, MEM_4K_BUF); -} - -void -memFree8K(void *p) -{ - memFree(p, MEM_8K_BUF); -} - -static void -memFree16K(void *p) -{ - memFree(p, MEM_16K_BUF); -} - -static void -memFree32K(void *p) -{ - memFree(p, MEM_32K_BUF); -} - -static void -memFree64K(void *p) -{ - memFree(p, MEM_64K_BUF); -} - -FREE * -memFreeBufFunc(size_t size) -{ - switch (size) { - case 2 * 1024: - return memFree2K; - case 4 * 1024: - return memFree4K; - case 8 * 1024: - return memFree8K; - case 16 * 1024: - return memFree16K; - case 32 * 1024: - return memFree32K; - case 64 * 1024: - return memFree64K; - default: - memMeterDec(HugeBufCountMeter); - memMeterDel(HugeBufVolumeMeter, size); - return xfree; - } -} Index: squid/src/protos.h =================================================================== RCS file: /cvsroot/squid-sf//squid/src/protos.h,v retrieving revision 1.146.2.4.4.43 retrieving revision 1.146.2.4.4.44 diff -u -r1.146.2.4.4.43 -r1.146.2.4.4.44 --- squid/src/protos.h 25 Jan 2008 08:34:11 -0000 1.146.2.4.4.43 +++ squid/src/protos.h 26 Jan 2008 12:03:30 -0000 1.146.2.4.4.44 @@ -1,6 +1,6 @@ /* - * $Id: protos.h,v 1.146.2.4.4.43 2008/01/25 08:34:11 adri Exp $ + * $Id: protos.h,v 1.146.2.4.4.44 2008/01/26 12:03:30 adri Exp $ * * * SQUID Web Proxy Cache http://www.squid-cache.org/ @@ -852,22 +852,7 @@ /* mem */ -extern void memInit(void); -extern void memClean(void); -extern void *memAllocate(mem_type); -extern void *memAllocBuf(size_t net_size, size_t * gross_size); -extern void *memReallocBuf(void *buf, size_t net_size, size_t * gross_size); -extern void memFree(void *, int type); -extern void memFree4K(void *); -extern void memFree8K(void *); -extern void memFreeBuf(size_t size, void *); -extern FREE *memFreeBufFunc(size_t size); -extern int memInUse(mem_type); -extern size_t memTotalAllocated(void); -extern void memDataInit(mem_type, const char *, size_t, int); -extern void memCheckInit(void); - -/* Mem */ +extern void memSquidInit(void); extern void memReport(StoreEntry * e); extern squid_off_t stmemFreeDataUpto(mem_hdr *, squid_off_t);