Fix slab sizing.
This commit is contained in:
parent
94563a7ecd
commit
a6f3756e68
1 changed files with 5 additions and 4 deletions
|
@ -67,7 +67,6 @@
|
|||
#define SLAB_START_POW2 8 /* 2 ^ SLAB_START_POW2 = SLAB_START. */
|
||||
|
||||
#define HTABLE_SZ 8192
|
||||
#define TWOM (2UL * 1024UL * 1024UL)
|
||||
#define ONEM (1UL * 1024UL * 1024UL)
|
||||
|
||||
static const unsigned int bv[] = {
|
||||
|
@ -125,7 +124,8 @@ slab_init()
|
|||
slab_sz *= 2;
|
||||
}
|
||||
|
||||
/* At this point slab_sz is 1M. So linear slots start at 1M. */
|
||||
/* Linear slots start at 1M. */
|
||||
slab_sz = ONEM;
|
||||
for (i = NUM_POW2; i < SLAB_POS_HASH; i++) {
|
||||
slabheads[i].avail = NULL;
|
||||
slabheads[i].next = NULL;
|
||||
|
@ -382,9 +382,10 @@ slab_alloc(void *p, size_t size)
|
|||
/* Next slots are in intervals of 1M. */
|
||||
div = size / ONEM;
|
||||
if (size % ONEM) div++;
|
||||
if (div < NUM_LINEAR) slab = &slabheads[div + NUM_POW2];
|
||||
if (div < NUM_LINEAR) slab = &slabheads[div + NUM_POW2 - 1];
|
||||
}
|
||||
}
|
||||
|
||||
if (!slab) {
|
||||
struct bufentry *buf = (struct bufentry *)malloc(sizeof (struct bufentry));
|
||||
uint32_t hindx;
|
||||
|
@ -510,4 +511,4 @@ slab_free(void *p, void *address)
|
|||
int
|
||||
slab_cache_add(size_t size) {}
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue