mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-04-09 18:51:36 +00:00
CLEANUP: pools: re-merge pool_refill_alloc() and __pool_refill_alloc()
They were strictly equivalent, let's remerge them and rename them to pool_alloc_nocache() as it's the call which performs a real allocation which does not check nor update the cache. The only difference in the past was the former taking the lock and not the second but now the lock is not needed anymore at this stage since the pool's list is not touched. In addition, given that the "avail" argument is no longer used by the function nor by its callers, let's drop it.
This commit is contained in:
parent
eb3cc29622
commit
8fe726f118
@ -48,8 +48,7 @@
|
||||
/* poison each newly allocated area with this byte if >= 0 */
|
||||
extern int mem_poison_byte;
|
||||
|
||||
void *__pool_refill_alloc(struct pool_head *pool, unsigned int avail);
|
||||
void *pool_refill_alloc(struct pool_head *pool, unsigned int avail);
|
||||
void *pool_alloc_nocache(struct pool_head *pool);
|
||||
void dump_pools_to_trash();
|
||||
void dump_pools(void);
|
||||
int pool_total_failures();
|
||||
@ -279,7 +278,7 @@ static inline void *__pool_alloc(struct pool_head *pool, unsigned int flags)
|
||||
HA_SPIN_LOCK(POOL_LOCK, &pool->lock);
|
||||
#endif
|
||||
if ((p = __pool_get_first(pool)) == NULL)
|
||||
p = __pool_refill_alloc(pool, 0);
|
||||
p = pool_alloc_nocache(pool);
|
||||
#if !defined(CONFIG_HAP_LOCKLESS_POOLS) && !defined(CONFIG_HAP_NO_GLOBAL_POOLS)
|
||||
HA_SPIN_UNLOCK(POOL_LOCK, &pool->lock);
|
||||
#endif
|
||||
|
@ -49,7 +49,7 @@ int init_buffer()
|
||||
pool_head_buffer->limit = global.tune.buf_limit;
|
||||
|
||||
for (done = 0; done < pool_head_buffer->minavail - 1; done++) {
|
||||
buffer = pool_refill_alloc(pool_head_buffer, 1);
|
||||
buffer = pool_alloc_nocache(pool_head_buffer);
|
||||
if (!buffer)
|
||||
return 0;
|
||||
pool_free(pool_head_buffer, buffer);
|
||||
|
18
src/pool.c
18
src/pool.c
@ -146,9 +146,13 @@ void pool_evict_from_cache()
|
||||
}
|
||||
#endif
|
||||
|
||||
/* simply fall back on the default OS' allocator */
|
||||
|
||||
void *__pool_refill_alloc(struct pool_head *pool, unsigned int avail)
|
||||
/* Tries to allocate an object for the pool <pool> using the system's allocator
|
||||
* and directly returns it. The pool's counters are updated but the object is
|
||||
* never cached, so this is usable with and without local or shared caches.
|
||||
* This may be called with or without the pool lock held, so it must not use
|
||||
* the pool's lock.
|
||||
*/
|
||||
void *pool_alloc_nocache(struct pool_head *pool)
|
||||
{
|
||||
int allocated = pool->allocated;
|
||||
int limit = pool->limit;
|
||||
@ -182,14 +186,6 @@ void *__pool_refill_alloc(struct pool_head *pool, unsigned int avail)
|
||||
return ptr;
|
||||
}
|
||||
|
||||
/* legacy stuff */
|
||||
void *pool_refill_alloc(struct pool_head *pool, unsigned int avail)
|
||||
{
|
||||
void *ptr;
|
||||
|
||||
ptr = __pool_refill_alloc(pool, avail);
|
||||
return ptr;
|
||||
}
|
||||
|
||||
#if defined(CONFIG_HAP_NO_GLOBAL_POOLS)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user