X-Git-Url: https://jfr.im/git/irc/quakenet/newserv.git/blobdiff_plain/7839f73a60770f2e3d8bc97ff1c3d709985a7203..ad740380e68eca0756c5b869d3e013fb1acc7824:/core/nsmalloc.h diff --git a/core/nsmalloc.h b/core/nsmalloc.h index bd113abe..35e5e279 100644 --- a/core/nsmalloc.h +++ b/core/nsmalloc.h @@ -1,21 +1,73 @@ /* nsmalloc: Simple pooled malloc() thing. */ +#ifndef __NSMALLOC_H +#define __NSMALLOC_H + +#ifdef __NSMALLOC_C +#define pool(x) #x +#define beginpools() char *nsmpoolnames[MAXPOOL] = +#define endpools(); +#else +#define pool(x) POOL_ ## x +#define beginpools(x) typedef enum nsmallocpools +#define endpools() nsmallocpools; extern char *nsmpoolnames[MAXPOOL]; + #include void *nsmalloc(unsigned int poolid, size_t size); void nsfree(unsigned int poolid, void *ptr); void nsfreeall(unsigned int poolid); void nsexit(void); +void *nsrealloc(unsigned int poolid, void *ptr, size_t size); +void nscheckfreeall(unsigned int poolid); #define MAXPOOL 100 +struct nsminfo { + struct nsminfo *next; + struct nsminfo *prev; + + size_t size; + char data[]; +}; + +struct nsmpool { + struct nsminfo first; + + unsigned long count; + size_t size; +}; + +extern struct nsmpool nsmpools[MAXPOOL]; + +#endif + /* Pools here in the order they were created */ -#define POOL_AUTHEXT 0 -#define POOL_CHANINDEX 1 -#define POOL_BANS 2 -#define POOL_CHANNEL 3 -#define POOL_NICK 4 -#define POOL_CHANSERVDB 5 -#define POOL_SSTRING 6 -#define POOL_AUTHTRACKER 7 -#define POOL_PROXYSCAN 8 + +beginpools() { + pool(AUTHEXT), + pool(CHANINDEX), + pool(BANS), + pool(CHANNEL), + pool(NICK), + pool(CHANSERVDB), + pool(SSTRING), + pool(AUTHTRACKER), + pool(PROXYSCAN), + pool(LUA), + pool(TROJANSCAN), + pool(NTERFACER), + pool(SQLITE), + pool(PQSQL), + pool(PATRICIA), + pool(PATRICIANICK), + pool(GLINE), + pool(TRUSTS), + pool(SPAMSCAN2), +} endpools() + +#undef pool +#undef beginpools +#undef endpools + +#endif