mirror of
https://gitlab.nic.cz/labs/bird.git
synced 2024-12-22 09:41:54 +00:00
Linpool: allocation split to fast and slow
This commit is contained in:
parent
3d45539455
commit
8e67cba528
@ -43,6 +43,7 @@ struct linpool {
|
|||||||
uint total, total_large;
|
uint total, total_large;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static void *lp_alloc_slow(struct linpool *, uint);
|
||||||
static void lp_free(resource *);
|
static void lp_free(resource *);
|
||||||
static void lp_dump(resource *, unsigned);
|
static void lp_dump(resource *, unsigned);
|
||||||
static resource *lp_lookup(resource *, unsigned long);
|
static resource *lp_lookup(resource *, unsigned long);
|
||||||
@ -99,6 +100,11 @@ lp_alloc(linpool *m, uint size)
|
|||||||
return a;
|
return a;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
return lp_alloc_slow(m, size);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void *
|
||||||
|
lp_alloc_slow(linpool *m, uint size)
|
||||||
{
|
{
|
||||||
struct lp_chunk *c;
|
struct lp_chunk *c;
|
||||||
if (size > LP_DATA_SIZE)
|
if (size > LP_DATA_SIZE)
|
||||||
@ -134,7 +140,6 @@ lp_alloc(linpool *m, uint size)
|
|||||||
}
|
}
|
||||||
return c->data;
|
return c->data;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* lp_allocu - allocate unaligned memory from a &linpool
|
* lp_allocu - allocate unaligned memory from a &linpool
|
||||||
@ -158,7 +163,7 @@ lp_allocu(linpool *m, uint size)
|
|||||||
m->ptr = e;
|
m->ptr = e;
|
||||||
return a;
|
return a;
|
||||||
}
|
}
|
||||||
return lp_alloc(m, size);
|
return lp_alloc_slow(m, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user