X-Git-Url: https://jfr.im/git/irc/quakenet/newserv.git/blobdiff_plain/271ef2d2665fa40ca39f4b65fc4c2936b59549f7..f4c9742568a27f565ebc2902491ef64038da20da:/core/nsmalloc.h diff --git a/core/nsmalloc.h b/core/nsmalloc.h index 97da8f9e..9410d283 100644 --- a/core/nsmalloc.h +++ b/core/nsmalloc.h @@ -5,23 +5,43 @@ #ifdef __NSMALLOC_C #define pool(x) #x -#define beginpools() char *poolnames[MAXPOOL] = +#define beginpools() char *nsmpoolnames[MAXPOOL] = #define endpools(); #else #define pool(x) POOL_ ## x -#define beginpools(x) enum -#define endpools() nsmallocpools; +#define beginpools(x) typedef enum nsmallocpools +#define endpools() nsmallocpools; extern char *nsmpoolnames[MAXPOOL]; #include +#include void *nsmalloc(unsigned int poolid, size_t size); void nsfree(unsigned int poolid, void *ptr); void nsfreeall(unsigned int poolid); +void nsinit(void); void nsexit(void); void *nsrealloc(unsigned int poolid, void *ptr, size_t size); -int nspoolstats(unsigned int poolid, size_t *size, unsigned long *count, char **poolname, size_t *realsize); +void nscheckfreeall(unsigned int poolid); +void *nscalloc(unsigned int poolid, size_t nmemb, size_t size); #define MAXPOOL 100 +#define REDZONE_MAGIC 0x243653E957851F68ULL +struct nsminfo { + struct nsminfo *next; + struct nsminfo *prev; + + size_t size; + uint64_t redzone; + char data[]; +}; + +struct nsmpool { + unsigned long count; + size_t size; + struct nsminfo *blocks; +}; + +extern struct nsmpool nsmpools[MAXPOOL]; #endif @@ -40,6 +60,16 @@ beginpools() { pool(LUA), pool(TROJANSCAN), pool(NTERFACER), + pool(SQLITE), + pool(PQSQL), + pool(PATRICIA), + pool(PATRICIANICK), + pool(GLINE), + pool(TRUSTS), + pool(SPAMSCAN2), + pool(ACHIEVEMENTS), + pool(CHANSTATS), + pool(SCHEDULE) } endpools() #undef pool