]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
- removed silly restriction that all memory pools are initialized
authorwessels <>
Mon, 19 Apr 1999 10:45:03 +0000 (10:45 +0000)
committerwessels <>
Mon, 19 Apr 1999 10:45:03 +0000 (10:45 +0000)
  in memInit()
- Added MEM_EVENT
- Fixed eventRun() bug that exited the run loop upon finding an event
  with invalid callback data.  This also most certainly leaked event
  structures.
- added "void" to a bunch of prototypes arglists.

src/dns_internal.cc
src/enums.h
src/event.cc
src/main.cc
src/mem.cc
src/protos.h
src/structs.h
src/typedefs.h

index 26225ef25e8d40e0ace47ca7eae96d2c2d2a5fa0..76b51399c3d43789241b8f6dd783e8a9b68c74f6 100644 (file)
@@ -1,6 +1,6 @@
 
 /*
- * $Id: dns_internal.cc,v 1.8 1999/04/19 03:31:30 wessels Exp $
+ * $Id: dns_internal.cc,v 1.9 1999/04/19 04:45:03 wessels Exp $
  *
  * DEBUG: section 78    DNS lookups; interacts with lib/rfc1035.c
  * AUTHOR: Duane Wessels
 
 #define IDNS_MAX_TRIES 20
 
+typedef struct _idns_query idns_query;
 typedef struct _ns ns;
+
+struct _idns_query {
+    char buf[512];
+    size_t sz;
+    unsigned short id;
+    int nsends;
+    struct timeval start_t;
+    struct timeval sent_t;
+    dlink_node lru;
+    IDNSCB *callback;
+    void *callback_data;
+};
+
 struct _ns {
     struct sockaddr_in S;
     int nqueries;
     int nreplies;
 };
+
 static ns *nameservers = NULL;
 static int nns = 0;
 static int nns_alloc = 0;
@@ -332,6 +347,7 @@ void
 idnsInit(void)
 {
     static int init = 0;
+    memDataInit(MEM_IDNS_QUERY, "idns_query", sizeof(idns_query), 0);
     if (DnsSocket < 0) {
        DnsSocket = comm_open(SOCK_DGRAM,
            0,
index 2e8f909063f514f85976acbf301b67fbafc94238..23cd876cb4b59f350c76c0a93486516f06bda388 100644 (file)
@@ -1,6 +1,6 @@
 
 /*
- * $Id: enums.h,v 1.148 1999/04/15 06:15:54 wessels Exp $
+ * $Id: enums.h,v 1.149 1999/04/19 04:45:03 wessels Exp $
  *
  *
  * SQUID Internet Object Cache  http://squid.nlanr.net/Squid/
@@ -557,6 +557,7 @@ typedef enum {
     MEM_USHORTLIST,
     MEM_WORDLIST,
     MEM_IDNS_QUERY,
+    MEM_EVENT,
     MEM_MAX
 } mem_type;
 
index 6ee4c0d3e30a214119661aa0382133ba2193b5fa..3fbd586497f4feeabeb34d79e2ffcb370d82d975 100644 (file)
@@ -1,6 +1,6 @@
 
 /*
- * $Id: event.cc,v 1.26 1999/04/19 03:53:36 wessels Exp $
+ * $Id: event.cc,v 1.27 1999/04/19 04:45:04 wessels Exp $
  *
  * DEBUG: section 41    Event Processing
  * AUTHOR: Henrik Nordstrom
@@ -53,7 +53,7 @@ static int run_id = 0;
 void
 eventAdd(const char *name, EVH * func, void *arg, double when, int weight)
 {
-    struct ev_entry *event = xcalloc(1, sizeof(struct ev_entry));
+    struct ev_entry *event = memAllocate(MEM_EVENT);
     struct ev_entry **E;
     event->func = func;
     event->arg = arg;
@@ -101,7 +101,7 @@ eventDelete(EVH * func, void *arg)
        *E = event->next;
        if (NULL != event->arg)
            cbdataUnlock(event->arg);
-       xfree(event);
+       memFree(event, MEM_EVENT);
        return;
     }
     debug_trap("eventDelete: event not found");
@@ -121,6 +121,7 @@ eventRun(void)
     run_id++;
     debug(41, 5) ("eventRun: RUN ID %d\n", run_id);
     while ((event = tasks)) {
+       int valid = 1;
        if (event->when > current_dtime)
            break;
        if (event->id == run_id)        /* was added during this run */
@@ -133,15 +134,16 @@ eventRun(void)
        event->arg = NULL;
        tasks = event->next;
        if (NULL != arg) {
-           int valid = cbdataValid(arg);
+           valid = cbdataValid(arg);
            cbdataUnlock(arg);
-           if (!valid)
-               return;
        }
-       weight += event->weight;
-       debug(41, 5) ("eventRun: Running '%s', id %d\n", event->name, event->id);
-       func(arg);
-       safe_free(event);
+       if (valid) {
+           weight += event->weight;
+           debug(41, 5) ("eventRun: Running '%s', id %d\n",
+               event->name, event->id);
+           func(arg);
+       }
+       memFree(event, MEM_EVENT);
     }
 }
 
@@ -156,6 +158,7 @@ eventNextTime(void)
 void
 eventInit(void)
 {
+    memDataInit(MEM_EVENT, "event", sizeof(struct ev_entry), 0);
     cachemgrRegister("events",
        "Event Queue",
        eventDump, 0, 1);
@@ -185,7 +188,7 @@ eventFreeMemory(void)
     while ((event = tasks)) {
        if (NULL != event->arg)
            cbdataUnlock(event->arg);
-       xfree(event);
+       memFree(event, MEM_EVENT);
     }
     tasks = NULL;
 }
index c21bec927e04cbf096aafbe784a0861498ec7b54..06a692572c2678f38827eae6f5e3403b61020d27 100644 (file)
@@ -1,6 +1,6 @@
 
 /*
- * $Id: main.cc,v 1.292 1999/04/15 06:16:00 wessels Exp $
+ * $Id: main.cc,v 1.293 1999/04/19 04:45:05 wessels Exp $
  *
  * DEBUG: section 1     Startup and Main Loop
  * AUTHOR: Harvest Derived
@@ -498,8 +498,8 @@ mainInitialize(void)
     squid_signal(SIGALRM, time_tick, SA_RESTART);
     alarm(1);
 #endif
+    memCheckInit();
     debug(1, 1) ("Ready to serve requests.\n");
-
     if (!configured_once) {
        eventAdd("storeMaintain", storeMaintainSwapSpace, NULL, 1.0, 1);
        eventAdd("storeDirClean", storeDirClean, NULL, 15.0, 1);
index 953f279804dc7e0707b104d3688c8e34a1c13293..c8a33045aa1d79bb947e79bafc8b11f0e30ee70d 100644 (file)
@@ -1,6 +1,6 @@
 
 /*
- * $Id: mem.cc,v 1.40 1999/04/14 05:16:17 wessels Exp $
+ * $Id: mem.cc,v 1.41 1999/04/19 04:45:06 wessels Exp $
  *
  * DEBUG: section 13    High Level Memory Pool Management
  * AUTHOR: Harvest Derived
@@ -65,17 +65,6 @@ static MemMeter StrVolumeMeter;
 
 /* local routines */
 
-/*
- * we have a limit on _total_ amount of idle memory so we ignore
- * max_pages for now
- */
-static void
-memDataInit(mem_type type, const char *name, size_t size, int max_pages_notused)
-{
-    assert(name && size);
-    MemPools[type] = memPoolCreate(name, size);
-}
-
 static void
 memStringStats(StoreEntry * sentry)
 {
@@ -119,6 +108,17 @@ memStats(StoreEntry * sentry)
  * 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)
+{
+    assert(name && size);
+    MemPools[type] = memPoolCreate(name, size);
+}
+
 
 /* find appropriate pool and use it (pools always init buffer with 0s) */
 void *
@@ -177,7 +177,6 @@ void
 memInit(void)
 {
     int i;
-    mem_type t;
     memInitModule();
     /* set all pointers to null */
     memset(MemPools, '\0', sizeof(MemPools));
@@ -291,9 +290,22 @@ memInit(void)
        sizeof(helper_request), 0);
     memDataInit(MEM_HELPER_SERVER, "helper_server",
        sizeof(helper_server), 0);
-    memDataInit(MEM_IDNS_QUERY, "idns_query",
-       sizeof(idns_query), 0);
-    /* test that all entries are initialized */
+    /* init string pools */
+    for (i = 0; i < mem_str_pool_count; i++) {
+       StrPools[i].pool = memPoolCreate(StrPoolsAttrs[i].name, StrPoolsAttrs[i].obj_size);
+    }
+    cachemgrRegister("mem",
+       "Memory Utilization",
+       memStats, 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;
@@ -303,17 +315,10 @@ memInit(void)
         */
        assert(MemPools[t]);
     }
-    /* init string pools */
-    for (i = 0; i < mem_str_pool_count; i++) {
-       StrPools[i].pool = memPoolCreate(StrPoolsAttrs[i].name, StrPoolsAttrs[i].obj_size);
-    }
-    cachemgrRegister("mem",
-       "Memory Utilization",
-       memStats, 0, 1);
 }
 
 void
-memClean()
+memClean(void)
 {
     memCleanModule();
 }
index fbaebd9f4b72bddc9ce9d8a597a24c671510e893..4e5ff79f0e0fa277ffd5f7e96843cc135744275e 100644 (file)
@@ -1,6 +1,6 @@
 
 /*
- * $Id: protos.h,v 1.318 1999/04/18 05:30:56 wessels Exp $
+ * $Id: protos.h,v 1.319 1999/04/19 04:45:06 wessels Exp $
  *
  *
  * SQUID Internet Object Cache  http://squid.nlanr.net/Squid/
@@ -737,10 +737,10 @@ extern void memMeterSyncHWater(MemMeter * m);
 
 /* mem */
 extern void memInit(void);
-extern void memClean();
-extern void memInitModule();
-extern void memCleanModule();
-extern void memConfigure();
+extern void memClean(void);
+extern void memInitModule(void);
+extern void memCleanModule(void);
+extern void memConfigure(void);
 extern void *memAllocate(mem_type);
 extern void *memAllocBuf(size_t net_size, size_t * gross_size);
 extern CBDUNL memFree;
@@ -751,6 +751,8 @@ extern void memFree8K(void *);
 extern void memFreeDISK(void *);
 extern int memInUse(mem_type);
 extern size_t memTotalAllocated(void);
+extern void memDataInit(mem_type, const char *, size_t, int);
+extern void memCheckInit(void);
 
 /* MemPool */
 extern MemPool *memPoolCreate(const char *label, size_t obj_size);
@@ -871,11 +873,11 @@ extern HASHCMP storeKeyHashCmp;
 extern EVH storeDirClean;
 
 /* store_digest.c */
-extern void storeDigestInit();
-extern void storeDigestNoteStoreReady();
-extern void storeDigestScheduleRebuild();
+extern void storeDigestInit(void);
+extern void storeDigestNoteStoreReady(void);
+extern void storeDigestScheduleRebuild(void);
 extern void storeDigestDel(const StoreEntry * entry);
-extern void storeDigestReport();
+extern void storeDigestReport(void);
 
 /*
  * store_dir.c
@@ -1115,11 +1117,11 @@ extern peer *carpSelectParent(request_t *);
 #if DELAY_POOLS
 extern void delayPoolsInit(void);
 extern void delayInitDelayData(unsigned short pools);
-extern void delayFreeDelayData();
+extern void delayFreeDelayData(void);
 extern void delayCreateDelayPool(unsigned short pool, u_char class);
 extern void delayInitDelayPool(unsigned short pool, u_char class, delaySpecSet * rates);
 extern void delayFreeDelayPool(unsigned short pool);
-extern void delayPoolsReconfigure();
+extern void delayPoolsReconfigure(void);
 extern void delaySetNoDelay(int fd);
 extern void delayClearNoDelay(int fd);
 extern int delayIsNoDelay(int fd);
index 9c73bbf8b2ceb80cca91af07ddd9bed9e34a1894..521a50a7bc0726238216bc5a4fc7316ec126acbf 100644 (file)
@@ -1,6 +1,6 @@
 
 /*
- * $Id: structs.h,v 1.281 1999/04/16 01:00:54 wessels Exp $
+ * $Id: structs.h,v 1.282 1999/04/19 04:45:07 wessels Exp $
  *
  *
  * SQUID Internet Object Cache  http://squid.nlanr.net/Squid/
@@ -1676,15 +1676,3 @@ struct _helper_server {
 struct _generic_cbdata {
     void *data;
 };
-
-struct _idns_query {
-    char buf[512];
-    size_t sz;
-    unsigned short id;
-    int nsends;
-    struct timeval start_t;
-    struct timeval sent_t;
-    dlink_node lru;
-    IDNSCB *callback;
-    void *callback_data;
-};
index 5fa163f97509b5a7c3872db4f7c6ee7286da2d6e..1bf367880301d22e51c87793be85780bb83adb08 100644 (file)
@@ -1,6 +1,6 @@
 
 /*
- * $Id: typedefs.h,v 1.87 1999/04/14 05:16:20 wessels Exp $
+ * $Id: typedefs.h,v 1.88 1999/04/19 04:45:08 wessels Exp $
  *
  *
  * SQUID Internet Object Cache  http://squid.nlanr.net/Squid/
@@ -161,7 +161,6 @@ typedef struct _helper helper;
 typedef struct _helper_server helper_server;
 typedef struct _helper_request helper_request;
 typedef struct _generic_cbdata generic_cbdata;
-typedef struct _idns_query idns_query;
 
 #if SQUID_SNMP
 typedef variable_list *(oid_ParseFn) (variable_list *, snint *);