MINOR: pools: prepare functions to override malloc/free in pools

This will be useful to add some debugging capabilities. For now it
changes nothing.
This commit is contained in:
Willy Tarreau 2017-11-22 10:50:54 +01:00
parent 424ecfb33c
commit f13322ede1
2 changed files with 20 additions and 3 deletions

View File

@ -155,6 +155,23 @@ static inline void *pool_alloc_dirty(struct pool_head *pool)
return p;
}
/* allocates an area of size <size> and returns it. The semantics are similar
* to those of malloc().
*/
static inline void *pool_alloc_area(size_t size)
{
return malloc(size);
}
/* frees an area <area> of size <size> allocated by pool_alloc_area(). The
* semantics are identical to free() except that the size is specified and
* may be ignored.
*/
static inline void pool_free_area(void *area, size_t __maybe_unused size)
{
free(area);
}
/*
* Returns a pointer to type <type> taken from the pool <pool_type> or
* dynamically allocated. In the first case, <pool_type> is updated to point to

View File

@ -117,7 +117,7 @@ void *__pool_refill_alloc(struct pool_head *pool, unsigned int avail)
if (pool->limit && pool->allocated >= pool->limit)
return NULL;
ptr = malloc(pool->size + POOL_EXTRA);
ptr = pool_alloc_area(pool->size + POOL_EXTRA);
if (!ptr) {
pool->failed++;
if (failed)
@ -163,7 +163,7 @@ void pool_flush2(struct pool_head *pool)
temp = next;
next = *POOL_LINK(pool, temp);
pool->allocated--;
free(temp);
pool_free_area(temp, pool->size + POOL_EXTRA);
}
pool->free_list = next;
HA_SPIN_UNLOCK(POOL_LOCK, &pool->lock);
@ -199,7 +199,7 @@ void pool_gc2(struct pool_head *pool_ctx)
temp = next;
next = *POOL_LINK(entry, temp);
entry->allocated--;
free(temp);
pool_free_area(temp, entry->size + POOL_EXTRA);
}
entry->free_list = next;
if (entry != pool_ctx)