From: wessels <> Date: Tue, 7 Jul 1998 08:54:13 +0000 (+0000) Subject: changed MemObject mem_hdr from a pointer to a struct X-Git-Tag: SQUID_3_0_PRE1~3105 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=18fe65d0f7d8b2ef2a16f562bd3441d6b00e04d4;p=thirdparty%2Fsquid.git changed MemObject mem_hdr from a pointer to a struct --- diff --git a/src/enums.h b/src/enums.h index 490bb0993f..d42255353f 100644 --- a/src/enums.h +++ b/src/enums.h @@ -577,7 +577,6 @@ typedef enum { MEM_ICP_COMMON_T, MEM_IOSTATS, MEM_MEM_NODE, - MEM_MEM_HDR, MEM_STORE_CLIENT, MEM_MEMOBJECT, MEM_STOREENTRY, diff --git a/src/mem.cc b/src/mem.cc index 842cc5f9ca..8ef30c6199 100644 --- a/src/mem.cc +++ b/src/mem.cc @@ -1,6 +1,6 @@ /* - * $Id: mem.cc,v 1.25 1998/05/30 19:43:14 rousskov Exp $ + * $Id: mem.cc,v 1.26 1998/07/07 02:54:14 wessels Exp $ * * DEBUG: section 13 High Level Memory Pool Management * AUTHOR: Harvest Derived @@ -244,7 +244,6 @@ memInit(void) memDataInit(MEM_IPCACHE_ENTRY, "ipcache_entry", sizeof(ipcache_entry), 0); memDataInit(MEM_MEMOBJECT, "MemObject", sizeof(MemObject), Squid_MaxFD >> 3); - memDataInit(MEM_MEM_HDR, "mem_hdr", sizeof(mem_hdr), 0); memDataInit(MEM_MEM_NODE, "mem_node", sizeof(mem_node), 0); memDataInit(MEM_NETDBENTRY, "netdbEntry", sizeof(netdbEntry), 0); memDataInit(MEM_NET_DB_NAME, "net_db_name", sizeof(net_db_name), 0); diff --git a/src/stat.cc b/src/stat.cc index 2ba9892cdd..8ef98118db 100644 --- a/src/stat.cc +++ b/src/stat.cc @@ -1,6 +1,6 @@ /* - * $Id: stat.cc,v 1.258 1998/06/08 17:29:19 wessels Exp $ + * $Id: stat.cc,v 1.259 1998/07/07 02:54:14 wessels Exp $ * * DEBUG: section 18 Cache Manager Statistics * AUTHOR: Harvest Derived @@ -597,8 +597,6 @@ info_get(StoreEntry * sentry) memInUse(MEM_STOREENTRY)); storeAppendPrintf(sentry, "\t%6d StoreEntries with MemObjects\n", memInUse(MEM_MEMOBJECT)); - storeAppendPrintf(sentry, "\t%6d StoreEntries with MemObject Data\n", - memInUse(MEM_MEM_HDR)); storeAppendPrintf(sentry, "\t%6d Hot Object Cache Items\n", hot_obj_count); storeAppendPrintf(sentry, "\t%6d Filemap bits set\n", diff --git a/src/stmem.cc b/src/stmem.cc index a7081a9c0a..6a11515cbd 100644 --- a/src/stmem.cc +++ b/src/stmem.cc @@ -1,6 +1,6 @@ /* - * $Id: stmem.cc,v 1.60 1998/03/28 23:24:50 wessels Exp $ + * $Id: stmem.cc,v 1.61 1998/07/07 02:54:15 wessels Exp $ * * DEBUG: section 19 Store Memory Primitives * AUTHOR: Harvest Derived @@ -109,27 +109,15 @@ void stmemFree(mem_hdr * mem) { - mem_node *lastp; - mem_node *p = mem->head; - - if (p) { - while (p && (p != mem->tail)) { - lastp = p; - p = p->next; - if (lastp) { - memFree(MEM_STMEM_BUF, lastp->data); - store_mem_size -= SM_PAGE_SIZE; - safe_free(lastp); - } - } - - if (p) { - memFree(MEM_STMEM_BUF, p->data); - store_mem_size -= SM_PAGE_SIZE; - safe_free(p); - } + mem_node *p; + while ((p = mem->head)) { + mem->head = p->next; + memFree(MEM_STMEM_BUF, p->data); + store_mem_size -= SM_PAGE_SIZE; + safe_free(p); } - memFree(MEM_MEM_HDR, mem); + mem->head = mem->tail = NULL; + mem->origin_offset = 0; } int diff --git a/src/store.cc b/src/store.cc index c0a838f176..5df41faabf 100644 --- a/src/store.cc +++ b/src/store.cc @@ -1,6 +1,6 @@ /* - * $Id: store.cc,v 1.424 1998/06/28 07:52:59 wessels Exp $ + * $Id: store.cc,v 1.425 1998/07/07 02:54:17 wessels Exp $ * * DEBUG: section 20 Storage Manager * AUTHOR: Harvest Derived @@ -155,7 +155,6 @@ static void storeGetMemSpace(int); static void storeHashDelete(StoreEntry *); static MemObject *new_MemObject(const char *, const char *); static void destroy_MemObject(StoreEntry *); -static void destroy_MemObjectData(MemObject *); static FREE destroy_StoreEntry; static void storePurgeMem(StoreEntry *); static unsigned int getKeyCounter(method_t); @@ -205,7 +204,8 @@ destroy_MemObject(StoreEntry * e) const Ctx ctx = ctx_enter(mem->url); debug(20, 3) ("destroy_MemObject: destroying %p\n", mem); assert(mem->swapout.fd == -1); - destroy_MemObjectData(mem); + stmemFree(&mem->data_hdr); + mem->inmem_hi = 0; /* XXX account log_url */ #if USE_ASYNC_IO while (mem->clients != NULL) @@ -238,18 +238,6 @@ destroy_StoreEntry(void *data) memFree(MEM_STOREENTRY, e); } -static void -destroy_MemObjectData(MemObject * mem) -{ - debug(20, 3) ("destroy_MemObjectData: destroying %p, %d bytes\n", - mem->data, (int) mem->inmem_hi); - if (mem->data) { - stmemFree(mem->data); - mem->data = NULL; - } - mem->inmem_hi = 0; -} - /* ----- INTERFACE BETWEEN STORAGE MANAGER AND HASH TABLE FUNCTIONS --------- */ void @@ -430,7 +418,6 @@ storeCreateEntry(const char *url, const char *log_url, int flags, method_t metho storeSetMemStatus(e, NOT_IN_MEMORY); e->swap_status = SWAPOUT_NONE; e->swap_file_number = -1; - mem->data = memAllocate(MEM_MEM_HDR); e->refcount = 0; e->lastref = squid_curtime; e->timestamp = 0; /* set in storeTimestampsSet() */ @@ -459,7 +446,7 @@ storeAppend(StoreEntry * e, const char *buf, int len) len, storeKeyText(e->key)); storeGetMemSpace(len); - stmemAppend(mem->data, buf, len); + stmemAppend(&mem->data_hdr, buf, len); mem->inmem_hi += len; } if (EBIT_TEST(e->flag, DELAY_SENDING)) @@ -903,7 +890,7 @@ storeKeepInMemory(const StoreEntry * e) MemObject *mem = e->mem_obj; if (mem == NULL) return 0; - if (mem->data == NULL) + if (mem->data_hdr.head == NULL) return 0; return mem->inmem_lo == 0; } @@ -1025,8 +1012,12 @@ storeUnregisterAbort(StoreEntry * e) void storeMemObjectDump(MemObject * mem) { - debug(20, 1) ("MemObject->data: %p\n", - mem->data); + debug(20, 1) ("MemObject->data.head: %p\n", + mem->data_hdr.head); + debug(20, 1) ("MemObject->data.tail: %p\n", + mem->data_hdr.tail); + debug(20, 1) ("MemObject->data.origin_offset: %d\n", + mem->data_hdr.origin_offset); debug(20, 1) ("MemObject->start_ping: %d.%06d\n", (int) mem->start_ping.tv_sec, (int) mem->start_ping.tv_usec); diff --git a/src/store_client.cc b/src/store_client.cc index 62a3267279..30e4ff40e4 100644 --- a/src/store_client.cc +++ b/src/store_client.cc @@ -178,7 +178,7 @@ storeClientCopy2(StoreEntry * e, store_client * sc) } else if (sc->copy_offset >= mem->inmem_lo && sc->copy_offset < mem->inmem_hi) { /* What the client wants is in memory */ debug(20, 3) ("storeClientCopy2: Copying from memory\n"); - sz = stmemCopy(mem->data, sc->copy_offset, sc->copy_buf, sc->copy_size); + sz = stmemCopy(&mem->data_hdr, sc->copy_offset, sc->copy_buf, sc->copy_size); #if USE_ASYNC_IO if (sc->flags.disk_io_pending) { if (sc->swapin_fd >= 0) diff --git a/src/store_swapout.cc b/src/store_swapout.cc index f96e209392..40b28082f0 100644 --- a/src/store_swapout.cc +++ b/src/store_swapout.cc @@ -134,13 +134,13 @@ storeCheckSwapOut(StoreEntry * e) if (!EBIT_TEST(e->flag, ENTRY_CACHABLE)) { if (!EBIT_TEST(e->flag, KEY_PRIVATE)) debug(20, 3) ("storeCheckSwapOut: Attempt to swap out a non-cacheable non-private object!\n"); - stmemFreeDataUpto(mem->data, new_mem_lo); + stmemFreeDataUpto(&mem->data_hdr, new_mem_lo); mem->inmem_lo = new_mem_lo; return; } if (mem->swapout.queue_offset < new_mem_lo) new_mem_lo = mem->swapout.queue_offset; - stmemFreeDataUpto(mem->data, new_mem_lo); + stmemFreeDataUpto(&mem->data_hdr, new_mem_lo); mem->inmem_lo = new_mem_lo; swapout_size = (size_t) (mem->inmem_hi - mem->swapout.queue_offset); @@ -165,7 +165,7 @@ storeCheckSwapOut(StoreEntry * e) if (swapout_size > STORE_SWAP_BUF) swapout_size = STORE_SWAP_BUF; swap_buf = memAllocate(MEM_DISK_BUF); - swap_buf_len = stmemCopy(mem->data, + swap_buf_len = stmemCopy(&mem->data_hdr, mem->swapout.queue_offset, swap_buf, swapout_size); diff --git a/src/structs.h b/src/structs.h index 91cfe6a6b0..3cea6a859c 100644 --- a/src/structs.h +++ b/src/structs.h @@ -1056,7 +1056,7 @@ struct _store_client { struct _MemObject { method_t method; char *url; - mem_hdr *data; + mem_hdr data_hdr; off_t inmem_hi; off_t inmem_lo; store_client *clients;