]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
Use mallinfo2() if available
authorTobias Brunner <tobias@strongswan.org>
Mon, 25 Apr 2022 11:30:27 +0000 (13:30 +0200)
committerTobias Brunner <tobias@strongswan.org>
Mon, 25 Apr 2022 12:16:20 +0000 (14:16 +0200)
mallinfo() is deprecated because it uses `int` for the members of the
returned struct, whereas mallinfo2() uses `size_t`.  It's available
since glibc 2.33.

configure.ac
scripts/malloc_speed.c
src/libcharon/plugins/stroke/stroke_list.c
src/libcharon/plugins/vici/vici_query.c

index 37a0a47d5e2c19aed12a296ea1af3a79e7affea1..69f32b807f9362eef1ff429c012428398d63a9bc 100644 (file)
@@ -668,7 +668,7 @@ AC_CHECK_FUNC(
        ]
 )
 
-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], [
index 2038098db835555960011bc6263c20a10ceee04c..c86ea3c3966d8c3617388ee5504e9c230cf67445 100644 (file)
@@ -18,9 +18,9 @@
 #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)
 {
@@ -38,12 +38,15 @@ static double end_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
index 1c44fefbaf832e0fe6163fb82ba16ea0d5586f8d..7fb3c67541dfba3009b407a938be1c727e9b4228 100644 (file)
@@ -22,9 +22,9 @@
 #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>
@@ -490,14 +490,19 @@ METHOD(stroke_list_t, status, void,
                }
                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));
index 1b7778de831d82a182333e4b112e7192d18b4e11..c35f4e1a996f183700df5eee580cff5d336c16b5 100644 (file)
@@ -48,7 +48,7 @@
 #ifndef WIN32
 #include <sys/utsname.h>
 #endif
-#ifdef HAVE_MALLINFO
+#if defined(HAVE_MALLINFO2) || defined (HAVE_MALLINFO)
 #include <malloc.h>
 #endif
 
@@ -1697,8 +1697,17 @@ CALLBACK(stats, vici_message_t*,
        }
 #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");
@@ -1707,8 +1716,8 @@ CALLBACK(stats, vici_message_t*,
                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);
 }