diff options
author | Christopher Michael <devilhorns@comcast.net> | 2021-02-25 08:25:29 -0500 |
---|---|---|
committer | Christopher Michael <devilhorns@comcast.net> | 2021-02-25 08:25:29 -0500 |
commit | d70f9484c6e6e9a5034adb350d78f761481cb3b0 (patch) | |
tree | 9917fe3cf99f7e2af5f8f90f0772ffc88cc77083 | |
parent | c6f20933c61afd4732dc10adcb42ca26d6b7875e (diff) | |
download | efl-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.c | 63 |
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); |