From 0f3db37199776402c2fa8758cbe2d1bc341e5d56 Mon Sep 17 00:00:00 2001 From: Carter Li Date: Fri, 16 Jan 2026 16:47:51 +0800 Subject: [PATCH] Chassis (Linux): supports arm devices --- src/detection/chassis/chassis_linux.c | 28 +++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/src/detection/chassis/chassis_linux.c b/src/detection/chassis/chassis_linux.c index d44d9bddf..ce2b14eaf 100644 --- a/src/detection/chassis/chassis_linux.c +++ b/src/detection/chassis/chassis_linux.c @@ -2,20 +2,28 @@ #include "common/io.h" #include "common/smbiosHelper.h" -#include +#include const char* ffDetectChassis(FFChassisResult* result) { - ffGetSmbiosValue("/sys/devices/virtual/dmi/id/chassis_type", "/sys/class/dmi/id/chassis_type", &result->type); - ffGetSmbiosValue("/sys/devices/virtual/dmi/id/chassis_serial", "/sys/class/dmi/id/chassis_serial", &result->serial); - ffGetSmbiosValue("/sys/devices/virtual/dmi/id/chassis_vendor", "/sys/class/dmi/id/chassis_vendor", &result->vendor); - ffGetSmbiosValue("/sys/devices/virtual/dmi/id/chassis_version", "/sys/class/dmi/id/chassis_version", &result->version); - - if(result->type.length) + if (ffGetSmbiosValue("/sys/devices/virtual/dmi/id/chassis_type", "/sys/class/dmi/id/chassis_type", &result->type)) { - const char* typeStr = ffChassisTypeToString((uint32_t) ffStrbufToUInt(&result->type, 9999)); - if(typeStr) - ffStrbufSetS(&result->type, typeStr); + ffGetSmbiosValue("/sys/devices/virtual/dmi/id/chassis_serial", "/sys/class/dmi/id/chassis_serial", &result->serial); + ffGetSmbiosValue("/sys/devices/virtual/dmi/id/chassis_vendor", "/sys/class/dmi/id/chassis_vendor", &result->vendor); + ffGetSmbiosValue("/sys/devices/virtual/dmi/id/chassis_version", "/sys/class/dmi/id/chassis_version", &result->version); + + if(result->type.length) + { + const char* typeStr = ffChassisTypeToString((uint32_t) ffStrbufToUInt(&result->type, 9999)); + if(typeStr) + ffStrbufSetS(&result->type, typeStr); + } + } + + else if(ffReadFileBuffer("/proc/device-tree/chassis-type", &result->type) && result->type.length > 0) + { + ffStrbufTrimRight(&result->type, '\0'); + result->type.chars[0] = (char) toupper(result->type.chars[0]); } return NULL; }