From 86458ab32aaf0edfd6e16829bb31fbdc3defb607 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Sun, 1 Mar 2026 14:07:20 +0800 Subject: [PATCH] Kmod (SunOS): adds support --- CMakeLists.txt | 2 +- src/common/impl/kmod_sunos.c | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 src/common/impl/kmod_sunos.c diff --git a/CMakeLists.txt b/CMakeLists.txt index 75273b39d..ac550d891 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1088,7 +1088,7 @@ elseif(SunOS) src/common/impl/processing_linux.c src/common/impl/FFPlatform_unix.c src/common/impl/binary_linux.c - src/common/impl/kmod_nosupport.c + src/common/impl/kmod_sunos.c src/detection/battery/battery_nosupport.c src/detection/bios/bios_windows.c src/detection/board/board_windows.c diff --git a/src/common/impl/kmod_sunos.c b/src/common/impl/kmod_sunos.c new file mode 100644 index 000000000..e6c403c82 --- /dev/null +++ b/src/common/impl/kmod_sunos.c @@ -0,0 +1,24 @@ +#include "common/kmod.h" +#include "common/stringUtils.h" + +#include +#include + +bool ffKmodLoaded(const char* modName) +{ + struct modinfo modinfo = { + .mi_id = -1, + .mi_nextid = -1, + .mi_info = MI_INFO_ALL, + }; + + for (int id = -1; modctl(MODINFO, id, &modinfo) == 0; id = modinfo.mi_id) + { + modinfo.mi_name[MODMAXNAMELEN - 1] = '\0'; + + if (ffStrEquals(modinfo.mi_name, modName)) + return true; + } + + return !(errno == EINVAL || errno == ENOENT); +}