]> git.ipfire.org Git - thirdparty/e2fsprogs.git/commitdiff
Use mallinfo2 instead of mallinfo if available
authorLukas Czerner <lczerner@redhat.com>
Thu, 17 Feb 2022 09:25:00 +0000 (10:25 +0100)
committerTheodore Ts'o <tytso@mit.edu>
Thu, 28 Apr 2022 17:13:56 +0000 (13:13 -0400)
mallinfo has been deprecated with GNU C library version 2.33 in favor of
mallinfo2 which works exactly the same as mallinfo but with larger field
widths. Use mallinfo2 if available.

Signed-off-by: Lukas Czerner <lczerner@redhat.com>
Reviewed-by: Andreas Dilger <adilger@dilger.ca>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
configure
configure.ac
e2fsck/iscan.c
e2fsck/util.c
lib/config.h.in
resize/resource_track.c

index effd929d8dce0fdefe4111e767882be4e9cf5609..530bc77ca952cf348c5c8deed7cf9b45788e665f 100755 (executable)
--- a/configure
+++ b/configure
@@ -11254,7 +11254,7 @@ fi
 if test -n "$DLOPEN_LIB" ; then
    ac_cv_func_dlopen=yes
 fi
-for ac_func in         __secure_getenv         add_key         backtrace       chflags         dlopen  fadvise64       fallocate       fallocate64     fchown  fcntl   fdatasync       fstat64         fsync   ftruncate64     futimes         getcwd  getdtablesize   getentropy      gethostname     getmntinfo      getpwuid_r      getrandom       getrlimit       getrusage       jrand48         keyctl  llistxattr      llseek  lseek64         mallinfo        mbstowcs        memalign        mempcpy         mmap    msync   nanosleep       open64  pathconf        posix_fadvise   posix_fadvise64         posix_memalign  prctl   pread   pwrite  pread64         pwrite64        secure_getenv   setmntent       setresgid       setresuid       snprintf        srandom         stpcpy  strcasecmp      strdup  strnlen         strptime        strtoull        sync_file_range         sysconf         usleep  utime   utimes  valloc
+for ac_func in         __secure_getenv         add_key         backtrace       chflags         dlopen  fadvise64       fallocate       fallocate64     fchown  fcntl   fdatasync       fstat64         fsync   ftruncate64     futimes         getcwd  getdtablesize   getentropy      gethostname     getmntinfo      getpwuid_r      getrandom       getrlimit       getrusage       jrand48         keyctl  llistxattr      llseek  lseek64         mallinfo        mallinfo2       mbstowcs        memalign        mempcpy         mmap    msync   nanosleep       open64  pathconf        posix_fadvise   posix_fadvise64         posix_memalign  prctl   pread   pwrite  pread64         pwrite64        secure_getenv   setmntent       setresgid       setresuid       snprintf        srandom         stpcpy  strcasecmp      strdup  strnlen         strptime        strtoull        sync_file_range         sysconf         usleep  utime   utimes  valloc
 do :
   as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
 ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
index dff3d1ca7784bca9df5e54a628d6f03b3ec7d595..8acc4e1cbbebad67caeb8e408c56f59ac2703c18 100644 (file)
@@ -1214,6 +1214,7 @@ AC_CHECK_FUNCS(m4_flatten([
        llseek
        lseek64
        mallinfo
+       mallinfo2
        mbstowcs
        memalign
        mempcpy
index 607e47528394e4fd0fd5eeb0a682636d4aedec2e..33c6a4cdc442a1f1442f5059c9722524f5e0ae65 100644 (file)
@@ -109,7 +109,16 @@ void print_resource_track(const char *desc,
                printf("%s: ", desc);
 
 #define kbytes(x)      (((unsigned long long)(x) + 1023) / 1024)
-#ifdef HAVE_MALLINFO
+#ifdef HAVE_MALLINFO2
+       if (1) {
+               struct mallinfo2 malloc_info = mallinfo2();
+
+               printf("Memory used: %lluk/%lluk (%lluk/%lluk), ",
+                      kbytes(malloc_info.arena), kbytes(malloc_info.hblkhd),
+                      kbytes(malloc_info.uordblks),
+                      kbytes(malloc_info.fordblks));
+       } else
+#elif defined HAVE_MALLINFO
        /* don't use mallinfo() if over 2GB used, since it returns "int" */
        if ((char *)sbrk(0) - (char *)track->brk_start < 2LL << 30) {
                struct mallinfo malloc_info = mallinfo();
index 3fe3c988880eb448ea8f9962bff30a86023a6595..42740d9effaecd90892e1e34914c2369394eadc7 100644 (file)
@@ -430,7 +430,16 @@ void print_resource_track(e2fsck_t ctx, const char *desc,
                log_out(ctx, "%s: ", desc);
 
 #define kbytes(x)      (((unsigned long long)(x) + 1023) / 1024)
-#ifdef HAVE_MALLINFO
+#ifdef HAVE_MALLINFO2
+       if (1) {
+               struct mallinfo2 malloc_info = mallinfo2();
+
+               log_out(ctx, _("Memory used: %lluk/%lluk (%lluk/%lluk), "),
+                       kbytes(malloc_info.arena), kbytes(malloc_info.hblkhd),
+                       kbytes(malloc_info.uordblks),
+                       kbytes(malloc_info.fordblks));
+       } else
+#elif defined HAVE_MALLINFO
        /* don't use mallinfo() if over 2GB used, since it returns "int" */
        if ((char *)sbrk(0) - (char *)track->brk_start < 2LL << 30) {
                struct mallinfo malloc_info = mallinfo();
index 9c9de65dae898d32f56ce7661dd251a3967f9e6a..b5856bb57c79757708bb8546668ef5a0a4cae65e 100644 (file)
 /* Define to 1 if you have the `mallinfo' function. */
 #undef HAVE_MALLINFO
 
+/* Define to 1 if you have the `mallinfo2' function. */
+#undef HAVE_MALLINFO2
+
 /* Define to 1 if you have the <malloc.h> header file. */
 #undef HAVE_MALLOC_H
 
index f0efe114170ba51167312f58b500d82251e7c5d3..f46670606aea8d706c6ffe7c2f02453ba9502a43 100644 (file)
@@ -63,8 +63,10 @@ void print_resource_track(ext2_resize_t rfs, struct resource_track *track,
 #ifdef HAVE_GETRUSAGE
        struct rusage r;
 #endif
-#ifdef HAVE_MALLINFO
-       struct mallinfo malloc_info;
+#ifdef HAVE_MALLINFO2
+       struct mallinfo2 malloc_info;
+#elif defined HAVE_MALLINFO
+       struct mallinfo malloc_info;
 #endif
        struct timeval time_end;
 
@@ -76,8 +78,13 @@ void print_resource_track(ext2_resize_t rfs, struct resource_track *track,
        if (track->desc)
                printf("%s: ", track->desc);
 
-#ifdef HAVE_MALLINFO
 #define kbytes(x)      (((unsigned long)(x) + 1023) / 1024)
+#ifdef HAVE_MALLINFO2
+       malloc_info = mallinfo2();
+       printf("Memory used: %luk/%luk (%luk/%luk), ",
+               kbytes(malloc_info.arena), kbytes(malloc_info.hblkhd),
+               kbytes(malloc_info.uordblks), kbytes(malloc_info.fordblks));
+#elif defined HAVE_MALLINFO
 
        malloc_info = mallinfo();
        printf("Memory used: %luk/%luk (%luk/%luk), ",