about summary refs log tree commit diff
path: root/src/base/system.c
diff options
context:
space:
mode:
authorMagnus Auvinen <magnus.auvinen@gmail.com>2008-10-02 12:29:19 +0000
committerMagnus Auvinen <magnus.auvinen@gmail.com>2008-10-02 12:29:19 +0000
commitcebda9790bfa7d109014d5871d79e9ecd88c7d50 (patch)
treed315b73baf879c0414cf652b89690796cc2f1f3b /src/base/system.c
parentbddc6ec6cc369e87d9dd0c0d1749bb871e1537a8 (diff)
downloadzcatch-cebda9790bfa7d109014d5871d79e9ecd88c7d50.tar.gz
zcatch-cebda9790bfa7d109014d5871d79e9ecd88c7d50.zip
some cleanups. splitted e_network.c into several files. continued on the ban support
Diffstat (limited to 'src/base/system.c')
-rw-r--r--src/base/system.c45
1 files changed, 25 insertions, 20 deletions
diff --git a/src/base/system.c b/src/base/system.c
index e2c37bbd..5fb48e12 100644
--- a/src/base/system.c
+++ b/src/base/system.c
@@ -58,6 +58,7 @@ static DBG_LOGGER loggers[16];
 static int num_loggers = 0;
 
 static NETSTATS network_stats = {0};
+static MEMSTATS memory_stats = {0};
 
 void dbg_logger(DBG_LOGGER logger)
 {
@@ -140,41 +141,39 @@ void dbg_logger_file(const char *filename)
 
 int memory_alloced = 0;
 
-struct memheader
+typedef struct MEMHEADER
 {
 	const char *filename;
 	int line;
 	int size;
-	struct memheader *prev;
-	struct memheader *next;
-};
+	struct MEMHEADER *prev;
+	struct MEMHEADER *next;
+} MEMHEADER;
 
-struct memtail
+typedef struct MEMTAIL
 {
 	int guard;
-};
+} MEMTAIL;
 
-static struct memheader *first = 0;
-
-int mem_allocated()
-{
-	return memory_alloced;
-}
+static struct MEMHEADER *first = 0;
 
 void *mem_alloc_debug(const char *filename, int line, unsigned size, unsigned alignment)
 {
 	/* TODO: fix alignment */
 	/* TODO: add debugging */
-	struct memheader *header = (struct memheader *)malloc(size+sizeof(struct memheader)+sizeof(struct memtail));
-	struct memtail *tail = (struct memtail *)(((char*)(header+1))+size);
+	MEMHEADER *header = (struct MEMHEADER *)malloc(size+sizeof(MEMHEADER)+sizeof(MEMTAIL));
+	MEMTAIL *tail = (struct MEMTAIL *)(((char*)(header+1))+size);
 	header->size = size;
 	header->filename = filename;
 	header->line = line;
-	memory_alloced += header->size;
+
+	memory_stats.allocated += header->size;
+	memory_stats.total_allocations++;
+	memory_stats.active_allocations++;
 	
 	tail->guard = 0xbaadc0de;
 
-	header->prev = (struct memheader *)0;
+	header->prev = (MEMHEADER *)0;
 	header->next = first;
 	if(first)
 		first->prev = header;
@@ -188,13 +187,14 @@ void mem_free(void *p)
 {
 	if(p)
 	{
-		struct memheader *header = (struct memheader *)p - 1;
-		struct memtail *tail = (struct memtail *)(((char*)(header+1))+header->size);
+		MEMHEADER *header = (MEMHEADER *)p - 1;
+		MEMTAIL *tail = (MEMTAIL *)(((char*)(header+1))+header->size);
 		
 		if(tail->guard != 0xbaadc0de)
 			dbg_msg("mem", "!! %p", p);
 		/* dbg_msg("mem", "-- %p", p); */
-		memory_alloced -= header->size;
+		memory_stats.allocated -= header->size;
+		memory_stats.active_allocations--;
 		
 		if(header->prev)
 			header->prev->next = header->next;
@@ -210,7 +210,7 @@ void mem_free(void *p)
 void mem_debug_dump()
 {
 	char buf[1024];
-	struct memheader *header = first;
+	MEMHEADER *header = first;
 	IOHANDLE f = io_open("memory.txt", IOFLAG_WRITE);
 	
 	while(header)
@@ -1109,6 +1109,11 @@ int mem_comp(const void *a, const void *b, int size)
 	return memcmp(a,b,size);
 }
 
+const MEMSTATS *mem_stats()
+{
+	return &memory_stats;
+}
+
 void net_stats(NETSTATS *stats_inout)
 {
 	*stats_inout = network_stats;