Software /
code /
prosody
Comparison
util-src/pposix.c @ 4946:2975c7008ccd
util.pposix: Add meminfo() binding to memory allocation stats provided by mallinfo() [compilation tested on Ubuntu...]
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Sun, 08 Jul 2012 18:47:05 +0100 |
parent | 4934:5a6a85719b7b |
child | 4950:02e5e9fa37b8 |
comparison
equal
deleted
inserted
replaced
4944:72a2eec4204a | 4946:2975c7008ccd |
---|---|
31 | 31 |
32 #include <string.h> | 32 #include <string.h> |
33 #include <errno.h> | 33 #include <errno.h> |
34 #include "lua.h" | 34 #include "lua.h" |
35 #include "lauxlib.h" | 35 #include "lauxlib.h" |
36 | |
37 #if (defined(_SVID_SOURCE) && !defined(WITHOUT_MALLINFO)) | |
38 #include <malloc.h> | |
39 #define WITH_MALLINFO | |
40 #endif | |
36 | 41 |
37 /* Daemonization support */ | 42 /* Daemonization support */ |
38 | 43 |
39 static int lc_daemonize(lua_State *L) | 44 static int lc_daemonize(lua_State *L) |
40 { | 45 { |
610 | 615 |
611 lua_pushboolean(L, 1); | 616 lua_pushboolean(L, 1); |
612 return 1; | 617 return 1; |
613 } | 618 } |
614 | 619 |
620 #ifdef WITH_MALLINFO | |
621 int lc_meminfo(lua_State* L) | |
622 { | |
623 struct mallinfo info = mallinfo(); | |
624 lua_newtable(L); | |
625 lua_pushinteger(L, info.arena); | |
626 lua_setfield(L, -2, "allocated"); | |
627 lua_pushinteger(L, info.hblkhd); | |
628 lua_setfield(L, -2, "allocated_mmap"); | |
629 lua_pushinteger(L, info.uordblks); | |
630 lua_setfield(L, -2, "used"); | |
631 lua_pushinteger(L, info.fordblks); | |
632 lua_setfield(L, -2, "unused"); | |
633 lua_pushinteger(L, info.keepcost); | |
634 lua_setfield(L, -2, "returnable"); | |
635 return 1; | |
636 } | |
637 #endif | |
638 | |
615 /* Register functions */ | 639 /* Register functions */ |
616 | 640 |
617 int luaopen_util_pposix(lua_State *L) | 641 int luaopen_util_pposix(lua_State *L) |
618 { | 642 { |
619 luaL_Reg exports[] = { | 643 luaL_Reg exports[] = { |
643 | 667 |
644 { "uname", lc_uname }, | 668 { "uname", lc_uname }, |
645 | 669 |
646 { "setenv", lc_setenv }, | 670 { "setenv", lc_setenv }, |
647 | 671 |
672 #ifdef WITH_MALLINFO | |
673 { "meminfo", lc_meminfo }, | |
674 #endif | |
675 | |
648 { NULL, NULL } | 676 { NULL, NULL } |
649 }; | 677 }; |
650 | 678 |
651 luaL_register(L, "pposix", exports); | 679 luaL_register(L, "pposix", exports); |
652 | 680 |