summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Michael <devilhorns@comcast.net>2021-02-25 08:25:29 -0500
committerChristopher Michael <devilhorns@comcast.net>2021-02-25 08:25:29 -0500
commitd70f9484c6e6e9a5034adb350d78f761481cb3b0 (patch)
tree9917fe3cf99f7e2af5f8f90f0772ffc88cc77083
parentc6f20933c61afd4732dc10adcb42ca26d6b7875e (diff)
downloadefl-d70f9484c6e6e9a5034adb350d78f761481cb3b0.tar.gz
ecore: Update to not use deprecated mallinfo
mallinfo (the structure) and mallinfo (the function) have both been deprecated in favor of mallinfo2 which has been updated to handle allocations > 4GB. This patch updates ecore usage of deprecated mallinfo to use mallinfo2. If the system does NOT have mallinfo2, then this code will fallback to using mallinfo.
-rw-r--r--src/lib/ecore/ecore.c63
1 files changed, 47 insertions, 16 deletions
diff --git a/src/lib/ecore/ecore.c b/src/lib/ecore/ecore.c
index 0d79b621b2..0b4ba4a8fd 100644
--- a/src/lib/ecore/ecore.c
+++ b/src/lib/ecore/ecore.c
@@ -32,8 +32,8 @@
#include "ecore_private.h"
#include "../../static_libs/buildsystem/buildsystem.h"
-#if defined(HAVE_MALLINFO) || defined(HAVE_MALLOC_INFO)
-#include <malloc.h>
+#if defined(HAVE_MALLINFO) || defined(HAVE_MALLOC_INFO) || defined(HAVE_MALLINFO2)
+# include <malloc.h>
#endif
#ifndef O_BINARY
@@ -45,14 +45,19 @@ EAPI Ecore_Version *ecore_version = &_version;
EAPI double _efl_startup_time = 0;
-#if defined(HAVE_MALLINFO) || defined(HAVE_MALLOC_INFO)
-#define KEEP_MAX(Global, Local) \
- if (Global < (Local)) \
- Global = Local;
+#if defined(HAVE_MALLINFO) || defined(HAVE_MALLOC_INFO) || defined(HAVE_MALLINFO2)
+# define KEEP_MAX(Global, Local) \
+ if (Global < (Local)) \
+ Global = Local;
static Eina_Bool _ecore_memory_statistic(void *data);
+# ifdef HAVE_MALLINFO2
+static size_t _ecore_memory_max_total = 0;
+static size_t _ecore_memory_max_free = 0;
+# else
static int _ecore_memory_max_total = 0;
static int _ecore_memory_max_free = 0;
+# endif
static pid_t _ecore_memory_pid = 0;
#ifdef HAVE_MALLOC_INFO
static FILE *_ecore_memory_statistic_file = NULL;
@@ -291,7 +296,7 @@ ecore_init(void)
if (_ecore_glib_always_integrate) ecore_main_loop_glib_integrate();
#endif
-#if defined(HAVE_MALLINFO) || defined(HAVE_MALLOC_INFO)
+#if defined(HAVE_MALLINFO) || defined(HAVE_MALLOC_INFO) || defined(HAVE_MALLINFO2)
if (getenv("ECORE_MEM_STAT"))
{
#ifdef HAVE_MALLOC_INFO
@@ -432,16 +437,22 @@ ecore_shutdown(void)
_ecore_main_loop_shutdown();
-#if defined(HAVE_MALLINFO) || defined(HAVE_MALLOC_INFO)
+#if defined(HAVE_MALLINFO) || defined(HAVE_MALLOC_INFO) || defined(HAVE_MALLINFO2)
if (getenv("ECORE_MEM_STAT"))
{
_ecore_memory_statistic(NULL);
+ #ifdef HAVE_MALLINFO2
+ ERR("[%i] Memory MAX total: %lu, free: %lu",
+ _ecore_memory_pid,
+ _ecore_memory_max_total,
+ _ecore_memory_max_free);
+ #else
ERR("[%i] Memory MAX total: %i, free: %i",
_ecore_memory_pid,
_ecore_memory_max_total,
_ecore_memory_max_free);
-
+ #endif
#ifdef HAVE_MALLOC_INFO
fclose(_ecore_memory_statistic_file);
@@ -963,20 +974,30 @@ _systemd_watchdog_cb(void *data EINA_UNUSED, const Efl_Event *event EINA_UNUSED)
}
#endif
-#if defined(HAVE_MALLINFO) || defined(HAVE_MALLOC_INFO)
+#if defined(HAVE_MALLINFO) || defined(HAVE_MALLOC_INFO) || defined(HAVE_MALLINFO2)
static Eina_Bool
_ecore_memory_statistic(EINA_UNUSED void *data)
{
#ifdef HAVE_MALLOC_INFO
static int frame = 0;
#endif
-#ifdef HAVE_MALLINFO
+
+#if defined(HAVE_MALLINFO) || defined(HAVE_MALLINFO2)
+ Eina_Bool changed = EINA_FALSE;
+
+# if defined(HAVE_MALLINFO2)
+ struct mallinfo2 mi;
+ static size_t uordblks = 0;
+ static size_t fordblks = 0;
+
+ mi = mallinfo2();
+# else
struct mallinfo mi;
static int uordblks = 0;
static int fordblks = 0;
- Eina_Bool changed = EINA_FALSE;
mi = mallinfo();
+# endif
#define HAS_CHANGED(Global, Local) \
if (Global != Local) \
@@ -989,14 +1010,24 @@ _ecore_memory_statistic(EINA_UNUSED void *data)
HAS_CHANGED(fordblks, mi.fordblks);
if (changed)
- ERR("[%i] Memory total: %i, free: %i",
- _ecore_memory_pid,
- mi.uordblks,
- mi.fordblks);
+ {
+#ifdef HAVE_MALLINFO2
+ ERR("[%i] Memory total: %lu, free: %lu",
+ _ecore_memory_pid,
+ mi.uordblks,
+ mi.fordblks);
+#else
+ ERR("[%i] Memory total: %i, free: %i",
+ _ecore_memory_pid,
+ mi.uordblks,
+ mi.fordblks);
+#endif
+ }
KEEP_MAX(_ecore_memory_max_total, mi.uordblks);
KEEP_MAX(_ecore_memory_max_free, mi.fordblks);
#endif
+
#ifdef HAVE_MALLOC_INFO
if (frame) fputs("\n", _ecore_memory_statistic_file);
malloc_info(0, _ecore_memory_statistic_file);