tree d75007325ea6f3d593a7fd2eb93e55aab3de83f7
parent b8498e961acde3b595b7d3db06d99fa9736bae03
author Willy Tarreau <w@1wt.eu> 1618737074 +0200
committer Willy Tarreau <w@1wt.eu> 1618838673 +0200
encoding latin1

MINOR: pools: create unified pool_{get_from,put_to}_cache()

These two functions are now responsible for allocating directly from
the cache and releasing to the cache.

Now the pool_alloc() function simply does this:

    if cache enabled
       return pool_alloc_from_cache() if no NULL
    return pool_alloc_nocache() otherwise

and the pool_free() function does this:

    if cache enabled
       pool_put_to_cache()
    else
       pool_free_nocache()

For now this only introduces these two functions without changing anything
else, but the goal is to soon allow to make them implementation-specific.
