/* Pools */
extern pool *cfg_pool;
-extern mempool *cfg_mem;
+extern linpool *cfg_mem;
-#define cfg_alloc(size) mp_alloc(cfg_mem, size)
-#define cfg_allocu(size) mp_allocu(cfg_mem, size)
-#define cfg_allocz(size) mp_allocz(cfg_mem, size)
-char *cfg_strcpy(char *c);
+#define cfg_alloc(size) lp_alloc(cfg_mem, size)
+#define cfg_allocu(size) lp_allocu(cfg_mem, size)
+#define cfg_allocz(size) lp_allocz(cfg_mem, size)
+char *cfg_strdup(char *c);
/* Lexer */
#include "nest/bird.h"
#include "lib/resource.h"
-struct mp_chunk {
- struct mp_chunk *next;
+struct lp_chunk {
+ struct lp_chunk *next;
byte data[0];
};
-struct mempool {
+struct linpool {
resource r;
byte *ptr, *end;
- struct mp_chunk *first, **plast;
+ struct lp_chunk *first, **plast;
unsigned chunk_size, threshold, total;
};
-void mp_free(resource *);
-void mp_dump(resource *);
+void lp_free(resource *);
+void lp_dump(resource *);
-static struct resclass mp_class = {
- "MemPool",
- sizeof(struct mempool),
- mp_free,
- mp_dump
+static struct resclass lp_class = {
+ "LinPool",
+ sizeof(struct linpool),
+ lp_free,
+ lp_dump
};
-mempool
-*mp_new(pool *p, unsigned blk)
+linpool
+*lp_new(pool *p, unsigned blk)
{
- mempool *m = ralloc(p, &mp_class);
+ linpool *m = ralloc(p, &lp_class);
m->ptr = m->end = NULL;
m->first = NULL;
m->plast = &m->first;
}
void *
-mp_alloc(mempool *m, unsigned size)
+lp_alloc(linpool *m, unsigned size)
{
byte *a = (byte *) ALIGN((unsigned long) m->ptr, CPU_STRUCT_ALIGN);
byte *e = a + size;
}
else
{
- struct mp_chunk *c;
+ struct lp_chunk *c;
if (size >= m->threshold)
{
- c = xmalloc(sizeof(struct mp_chunk) + size);
+ c = xmalloc(sizeof(struct lp_chunk) + size);
m->total += size;
}
else
{
- c = xmalloc(sizeof(struct mp_chunk) + m->chunk_size);
+ c = xmalloc(sizeof(struct lp_chunk) + m->chunk_size);
m->ptr = c->data + size;
m->end = c->data + m->chunk_size;
m->total += m->chunk_size;
}
void *
-mp_allocu(mempool *m, unsigned size)
+lp_allocu(linpool *m, unsigned size)
{
byte *a = m->ptr;
byte *e = a + size;
m->ptr = e;
return a;
}
- return mp_alloc(m, size);
+ return lp_alloc(m, size);
}
void *
-mp_allocz(mempool *m, unsigned size)
+lp_allocz(linpool *m, unsigned size)
{
- void *z = mp_alloc(m, size);
+ void *z = lp_alloc(m, size);
bzero(z, size);
return z;
}
void
-mp_free(resource *r)
+lp_free(resource *r)
{
- mempool *m = (mempool *) r;
- struct mp_chunk *c, *d;
+ linpool *m = (linpool *) r;
+ struct lp_chunk *c, *d;
for(d=m->first; d; d = c)
{
}
void
-mp_dump(resource *r)
+lp_dump(resource *r)
{
- mempool *m = (mempool *) r;
- struct mp_chunk *c;
+ linpool *m = (linpool *) r;
+ struct lp_chunk *c;
int cnt;
for(cnt=0, c=m->first; c; c=c->next, cnt++)
/* Memory pools with linear allocation */
-typedef struct mempool mempool;
+typedef struct linpool linpool;
-mempool *mp_new(pool *, unsigned blk);
-void *mp_alloc(mempool *, unsigned size); /* Aligned */
-void *mp_allocu(mempool *, unsigned size); /* Unaligned */
-void *mp_allocz(mempool *, unsigned size); /* With clear */
+linpool *lp_new(pool *, unsigned blk);
+void *lp_alloc(linpool *, unsigned size); /* Aligned */
+void *lp_allocu(linpool *, unsigned size); /* Unaligned */
+void *lp_allocz(linpool *, unsigned size); /* With clear */
/* Slabs */