]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Fix] Fix OpenBSD kinfo_proc structure member names
authorVsevolod Stakhov <vsevolod@rspamd.com>
Tue, 4 Nov 2025 13:45:37 +0000 (13:45 +0000)
committerVsevolod Stakhov <vsevolod@rspamd.com>
Tue, 4 Nov 2025 13:45:37 +0000 (13:45 +0000)
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

index 931e111a6a4473cc19a507355de91534a2072a83..b6f1e7490351d882ee2e403ce527bdccbb60a392 100644 (file)
@@ -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;