mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2026-01-29 14:01:50 +01:00
MINOR: pools: use mallinfo2() when available instead of mallinfo()
Ilya reported in issue #1391 a build warning on Fedora about mallinfo() being deprecated in favor of mallinfo2() since glibc-2.33. Let's add support for it. This should be backported where the following commit is also backported: 157e39303 ("MINOR: pools: automatically disable malloc_trim() with external allocators").
This commit is contained in:
parent
a096155e08
commit
c2afb860f2
@ -282,6 +282,12 @@ typedef struct { } empty_t;
|
||||
#define HA_HAVE_FAST_MALLOC
|
||||
#endif
|
||||
|
||||
/* glibc 2.33 provides mallinfo2() that overcomes mallinfo()'s type limitations */
|
||||
#if (defined(__GNU_LIBRARY__) && (__GLIBC__ > 2 || __GLIBC__ == 2 && __GLIBC_MINOR__ >= 33))
|
||||
#include <malloc.h>
|
||||
#define HA_HAVE_MALLINFO2
|
||||
#endif
|
||||
|
||||
/* FreeBSD also has malloc_usable_size() but it requires malloc_np.h */
|
||||
#if defined(USE_MEMORY_PROFILING) && defined(__FreeBSD__) && (__FreeBSD_version >= 700002)
|
||||
#include <malloc_np.h>
|
||||
|
||||
12
src/pool.c
12
src/pool.c
@ -58,12 +58,24 @@ static void trim_all_pools(void)
|
||||
*/
|
||||
static void detect_allocator(void)
|
||||
{
|
||||
#ifdef HA_HAVE_MALLINFO2
|
||||
struct mallinfo2 mi1, mi2;
|
||||
#else
|
||||
struct mallinfo mi1, mi2;
|
||||
#endif
|
||||
void *ptr;
|
||||
|
||||
#ifdef HA_HAVE_MALLINFO2
|
||||
mi1 = mallinfo2();
|
||||
#else
|
||||
mi1 = mallinfo();
|
||||
#endif
|
||||
ptr = DISGUISE(malloc(1));
|
||||
#ifdef HA_HAVE_MALLINFO2
|
||||
mi2 = mallinfo2();
|
||||
#else
|
||||
mi2 = mallinfo();
|
||||
#endif
|
||||
free(DISGUISE(ptr));
|
||||
|
||||
using_libc_allocator = !!memcmp(&mi1, &mi2, sizeof(mi1));
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user