From b7ec14a6bee253a52e93688b25e000f8c62c44c2 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Tue, 4 Nov 2025 13:45:37 +0000 Subject: [PATCH] [Fix] Fix OpenBSD kinfo_proc structure member names OpenBSD uses p_vm_* member names similar to NetBSD, not FreeBSD's ki_* names. Separate OpenBSD implementation from FreeBSD to use correct structure members. --- src/lua/lua_util.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/lua/lua_util.c b/src/lua/lua_util.c index 931e111a6a..b6f1e74903 100644 --- a/src/lua/lua_util.c +++ b/src/lua/lua_util.c @@ -2549,7 +2549,7 @@ lua_util_get_memory_usage(lua_State *L) lua_pushinteger(L, kp.p_vm_vsize * getpagesize()); lua_settable(L, -3); } -#elif defined(__FreeBSD__) || defined(__OpenBSD__) +#elif defined(__FreeBSD__) struct kinfo_proc kp; size_t len = sizeof(kp); int mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid()}; @@ -2563,6 +2563,20 @@ lua_util_get_memory_usage(lua_State *L) lua_pushinteger(L, kp.ki_size); lua_settable(L, -3); } +#elif defined(__OpenBSD__) + struct kinfo_proc kp; + size_t len = sizeof(kp); + int mib[6] = {CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid(), sizeof(struct kinfo_proc), 1}; + + if (sysctl(mib, 6, &kp, &len, NULL, 0) == 0) { + lua_pushstring(L, "rss"); + lua_pushinteger(L, kp.p_vm_rssize * getpagesize()); + lua_settable(L, -3); + + lua_pushstring(L, "vsize"); + lua_pushinteger(L, (kp.p_vm_tsize + kp.p_vm_dsize + kp.p_vm_ssize) * getpagesize()); + lua_settable(L, -3); + } #endif return 1; -- 2.47.3