]
)
-AC_CHECK_FUNCS(prctl mallinfo getpass closefrom getpwnam_r getgrnam_r getpwuid_r chown)
+AC_CHECK_FUNCS(prctl mallinfo mallinfo2 getpass closefrom getpwnam_r getgrnam_r getpwuid_r chown)
AC_CHECK_FUNCS(fmemopen funopen mmap memrchr setlinebuf strptime dirfd sigwaitinfo explicit_bzero)
AC_CHECK_FUNC([syslog], [
#include <library.h>
#include <utils/debug.h>
-#ifdef HAVE_MALLINFO
+#if defined(HAVE_MALLINFO2) || defined (HAVE_MALLINFO)
#include <malloc.h>
-#endif /* HAVE_MALLINFO */
+#endif
static void start_timing(struct timespec *start)
{
static void print_mallinfo()
{
-#ifdef HAVE_MALLINFO
+#ifdef HAVE_MALLINFO2
+ struct mallinfo2 mi = mallinfo2();
+ printf("malloc: sbrk %zu, mmap %zu, used %zu, free %zu\n",
+ mi.arena, mi.hblkhd, mi.uordblks, mi.fordblks);
+#elif defined(HAVE_MALLINFO)
struct mallinfo mi = mallinfo();
-
printf("malloc: sbrk %d, mmap %d, used %d, free %d\n",
mi.arena, mi.hblkhd, mi.uordblks, mi.fordblks);
-#endif /* HAVE_MALLINFO */
+#endif
}
#define ALLOCS 1024
#include <time.h>
#include <sys/utsname.h>
-#ifdef HAVE_MALLINFO
+#if defined(HAVE_MALLINFO2) || defined (HAVE_MALLINFO)
#include <malloc.h>
-#endif /* HAVE_MALLINFO */
+#endif
#include <daemon.h>
#include <collections/linked_list.h>
}
fprintf(out, "):\n uptime: %V, since %T\n", &now, &this->uptime, &since,
FALSE);
-#ifdef HAVE_MALLINFO
{
+#ifdef HAVE_MALLINFO2
+ struct mallinfo2 mi = mallinfo2();
+
+ fprintf(out, " malloc: sbrk %zu, mmap %zu, used %zu, free %zu\n",
+ mi.arena, mi.hblkhd, mi.uordblks, mi.fordblks);
+#elif defined (HAVE_MALLINFO)
struct mallinfo mi = mallinfo();
fprintf(out, " malloc: sbrk %u, mmap %u, used %u, free %u\n",
mi.arena, mi.hblkhd, mi.uordblks, mi.fordblks);
+#endif
}
-#endif /* HAVE_MALLINFO */
fprintf(out, " worker threads: %d of %d idle, ",
lib->processor->get_idle_threads(lib->processor),
lib->processor->get_total_threads(lib->processor));
#ifndef WIN32
#include <sys/utsname.h>
#endif
-#ifdef HAVE_MALLINFO
+#if defined(HAVE_MALLINFO2) || defined (HAVE_MALLINFO)
#include <malloc.h>
#endif
}
#endif
-#ifdef HAVE_MALLINFO
{
+#ifdef HAVE_MALLINFO2
+ struct mallinfo2 mi = mallinfo2();
+
+ b->begin_section(b, "mallinfo");
+ b->add_kv(b, "sbrk", "%zu", mi.arena);
+ b->add_kv(b, "mmap", "%zu", mi.hblkhd);
+ b->add_kv(b, "used", "%zu", mi.uordblks);
+ b->add_kv(b, "free", "%zu", mi.fordblks);
+ b->end_section(b);
+#elif defined(HAVE_MALLINFO)
struct mallinfo mi = mallinfo();
b->begin_section(b, "mallinfo");
b->add_kv(b, "used", "%u", mi.uordblks);
b->add_kv(b, "free", "%u", mi.fordblks);
b->end_section(b);
+#endif /* HAVE_MALLINFO(2) */
}
-#endif /* HAVE_MALLINFO */
return b->finalize(b);
}