Comparison

util-src/pposix.c @ 12154:760dd1fc3dc1

util.pposix: Use mallinfo2() on glibc 2.33, fix #1649
author Kim Alvefur <zash@zash.se>
date Thu, 06 Jan 2022 18:56:06 +0100
parent 11656:c368b4f6ee04
child 12575:1f6f05a98fcd
comparison
equal deleted inserted replaced
12153:26af75c20163 12154:760dd1fc3dc1
726 return 1; 726 return 1;
727 } 727 }
728 728
729 #ifdef WITH_MALLINFO 729 #ifdef WITH_MALLINFO
730 static int lc_meminfo(lua_State *L) { 730 static int lc_meminfo(lua_State *L) {
731 #if __GLIBC_PREREQ(2, 33)
732 struct mallinfo2 info = mallinfo2();
733 #define MALLINFO_T size_t
734 #else
731 struct mallinfo info = mallinfo(); 735 struct mallinfo info = mallinfo();
736 #define MALLINFO_T unsigned
737 #endif
732 lua_createtable(L, 0, 5); 738 lua_createtable(L, 0, 5);
733 /* This is the total size of memory allocated with sbrk by malloc, in bytes. */ 739 /* This is the total size of memory allocated with sbrk by malloc, in bytes. */
734 lua_pushinteger(L, (unsigned)info.arena); 740 lua_pushinteger(L, (MALLINFO_T)info.arena);
735 lua_setfield(L, -2, "allocated"); 741 lua_setfield(L, -2, "allocated");
736 /* This is the total size of memory allocated with mmap, in bytes. */ 742 /* This is the total size of memory allocated with mmap, in bytes. */
737 lua_pushinteger(L, (unsigned)info.hblkhd); 743 lua_pushinteger(L, (MALLINFO_T)info.hblkhd);
738 lua_setfield(L, -2, "allocated_mmap"); 744 lua_setfield(L, -2, "allocated_mmap");
739 /* This is the total size of memory occupied by chunks handed out by malloc. */ 745 /* This is the total size of memory occupied by chunks handed out by malloc. */
740 lua_pushinteger(L, (unsigned)info.uordblks); 746 lua_pushinteger(L, (MALLINFO_T)info.uordblks);
741 lua_setfield(L, -2, "used"); 747 lua_setfield(L, -2, "used");
742 /* This is the total size of memory occupied by free (not in use) chunks. */ 748 /* This is the total size of memory occupied by free (not in use) chunks. */
743 lua_pushinteger(L, (unsigned)info.fordblks); 749 lua_pushinteger(L, (MALLINFO_T)info.fordblks);
744 lua_setfield(L, -2, "unused"); 750 lua_setfield(L, -2, "unused");
745 /* This is the size of the top-most releasable chunk that normally borders the 751 /* This is the size of the top-most releasable chunk that normally borders the
746 end of the heap (i.e., the high end of the virtual address space's data segment). */ 752 end of the heap (i.e., the high end of the virtual address space's data segment). */
747 lua_pushinteger(L, (unsigned)info.keepcost); 753 lua_pushinteger(L, (MALLINFO_T)info.keepcost);
748 lua_setfield(L, -2, "returnable"); 754 lua_setfield(L, -2, "returnable");
749 return 1; 755 return 1;
750 } 756 }
757 #undef MALLINFO_T
751 #endif 758 #endif
752 759
753 /* 760 /*
754 * Append some data to a file handle 761 * Append some data to a file handle
755 * Attempt to allocate space first 762 * Attempt to allocate space first