[PATCH] lib: dmicheck: replace defines by enum type

Alex Hung alex.hung at canonical.com
Tue Jul 31 17:39:16 UTC 2018


This also eliminates the needs to update FWTS_SMBIOS_CHASSIS_MAX if
SMBIOS spec introduces new chassis types.

Signed-off-by: Alex Hung <alex.hung at canonical.com>
---
 src/dmi/dmicheck/dmicheck.c   |  2 +-
 src/lib/include/fwts_smbios.h | 82 ++++++++++++++++++++++---------------------
 2 files changed, 43 insertions(+), 41 deletions(-)

diff --git a/src/dmi/dmicheck/dmicheck.c b/src/dmi/dmicheck/dmicheck.c
index 89288ad..8497c2a 100644
--- a/src/dmi/dmicheck/dmicheck.c
+++ b/src/dmi/dmicheck/dmicheck.c
@@ -1135,7 +1135,7 @@ static void dmicheck_entry(fwts_framework *fw,
 			dmi_str_check(fw, table, addr, "Manufacturer", hdr, 0x4);
 			dmi_min_max_mask_uint8_check(fw, table, addr, "Chassis Type", hdr, 0x5, 0x1, 0x24, 0x0, 0x7f);
 
-			if ((data[5] & ~0x80) > FWTS_SMBIOS_CHASSIS_MAX) {
+			if ((data[5] & ~0x80) >= FWTS_SMBIOS_CHASSIS_MAX) {
 				fwts_failed(fw, LOG_LEVEL_HIGH, DMI_INVALID_HARDWARE_ENTRY,
 					"Incorrect Chassis Type "
 					"SMBIOS Type 3 reports 0x%" PRIx8,
diff --git a/src/lib/include/fwts_smbios.h b/src/lib/include/fwts_smbios.h
index f977bb8..05f1d5f 100644
--- a/src/lib/include/fwts_smbios.h
+++ b/src/lib/include/fwts_smbios.h
@@ -27,46 +27,48 @@
 #define FWTS_SMBIOS_REGION_END       (0x000fffff)
 #define FWTS_SMBIOS_REGION_SIZE      (FWTS_SMBIOS_REGION_END - FWTS_SMBIOS_REGION_START)
 
-#define FWTS_SMBIOS_CHASSIS_INVALID			(0x00)
-#define FWTS_SMBIOS_CHASSIS_OTHER			(0X01)
-#define FWTS_SMBIOS_CHASSIS_UNKNOWN			(0x02)
-#define FWTS_SMBIOS_CHASSIS_DESKTOP			(0x03)
-#define FWTS_SMBIOS_CHASSIS_LOW_PROFILE_DESKTOP		(0x04)
-#define FWTS_SMBIOS_CHASSIS_PIZZA_BOX			(0x05)
-#define FWTS_SMBIOS_CHASSIS_MINI_TOWER			(0x06)
-#define FWTS_SMBIOS_CHASSIS_TOWER			(0x07)
-#define FWTS_SMBIOS_CHASSIS_PORTABLE			(0x08)
-#define FWTS_SMBIOS_CHASSIS_LAPTOP			(0x09)
-#define FWTS_SMBIOS_CHASSIS_NOTEBOOK			(0x0A)
-#define FWTS_SMBIOS_CHASSIS_HANDHELD			(0x0B)
-#define FWTS_SMBIOS_CHASSIS_DOCKING_STATION		(0x0C)
-#define FWTS_SMBIOS_CHASSIS_ALL_IN_ONE			(0x0D)
-#define FWTS_SMBIOS_CHASSIS_SUB_NOTEBOOK		(0x0E)
-#define FWTS_SMBIOS_CHASSIS_SPACE_SAVING		(0x0F)
-#define FWTS_SMBIOS_CHASSIS_LUNCH_BOX			(0x10)
-#define FWTS_SMBIOS_CHASSIS_MAIN_SERVER_CHASSIS		(0x11)
-#define FWTS_SMBIOS_CHASSIS_EXPANISON_CHASSIS		(0x12)
-#define FWTS_SMBIOS_CHASSIS_SUB_CHASSIS			(0x13)
-#define FWTS_SMBIOS_CHASSIS_BUS_EXPANSION_CHASSIS	(0x14)
-#define FWTS_SMBIOS_CHASSIS_PERIPHERAL_CHASSIS		(0x15)
-#define FWTS_SMBIOS_CHASSIS_RAID_CHASSIS		(0x16)
-#define FWTS_SMBIOS_CHASSIS_RACK_MOUNT_CHASSIS		(0x17)
-#define FWTS_SMBIOS_CHASSIS_SEALED_CASE_PC		(0x18)
-#define FWTS_SMBIOS_CHASSIS_MULTI_SYSTEM_CHASSIS	(0x19)
-#define FWTS_SMBIOS_CHASSIS_COMPACT_PCI			(0x1A)
-#define FWTS_SMBIOS_CHASSIS_ADVANCED_TCA		(0x1B)
-#define FWTS_SMBIOS_CHASSIS_BLADE			(0x1C)
-#define FWTS_SMBIOS_CHASSIS_BLADE_ENCLOSURE		(0x1D)
-#define FWTS_SMBIOS_CHASSIS_TABLET			(0x1E)
-#define FWTS_SMBIOS_CHASSIS_CONVERTIBLE			(0x1F)
-#define FWTS_SMBIOS_CHASSIS_DETACHABLE			(0x20)
-#define FWTS_SMBIOS_CHASSIS_IOT_GATEWAY			(0x21)
-#define FWTS_SMBIOS_CHASSIS_EMBEDDED_PC			(0x22)
-#define FWTS_SMBIOS_CHASSIS_MINI_PC			(0x23)
-#define FWTS_SMBIOS_CHASSIS_STICK_PC			(0x24)
-
-/* Always update this to the last FWTS_SMBIOS_CHASSIS type */
-#define FWTS_SMBIOS_CHASSIS_MAX				(FWTS_SMBIOS_CHASSIS_STICK_PC)
+/* SMBIOS chassis in type 3 (Table 17 - System Enclosure or Chassis Types) */
+enum {
+	FWTS_SMBIOS_CHASSIS_INVALID,
+	FWTS_SMBIOS_CHASSIS_OTHER,
+	FWTS_SMBIOS_CHASSIS_UNKNOWN,
+	FWTS_SMBIOS_CHASSIS_DESKTOP,
+	FWTS_SMBIOS_CHASSIS_LOW_PROFILE_DESKTOP,
+	FWTS_SMBIOS_CHASSIS_PIZZA_BOX,
+	FWTS_SMBIOS_CHASSIS_MINI_TOWER,
+	FWTS_SMBIOS_CHASSIS_TOWER,
+	FWTS_SMBIOS_CHASSIS_PORTABLE,
+	FWTS_SMBIOS_CHASSIS_LAPTOP,
+	FWTS_SMBIOS_CHASSIS_NOTEBOOK,
+	FWTS_SMBIOS_CHASSIS_HANDHELD,
+	FWTS_SMBIOS_CHASSIS_DOCKING_STATION,
+	FWTS_SMBIOS_CHASSIS_ALL_IN_ONE,
+	FWTS_SMBIOS_CHASSIS_SUB_NOTEBOOK,
+	FWTS_SMBIOS_CHASSIS_SPACE_SAVING,
+	FWTS_SMBIOS_CHASSIS_LUNCH_BOX,
+	FWTS_SMBIOS_CHASSIS_MAIN_SERVER_CHASSIS,
+	FWTS_SMBIOS_CHASSIS_EXPANISON_CHASSIS,
+	FWTS_SMBIOS_CHASSIS_SUB_CHASSIS,
+	FWTS_SMBIOS_CHASSIS_BUS_EXPANSION_CHASSIS,
+	FWTS_SMBIOS_CHASSIS_PERIPHERAL_CHASSIS,
+	FWTS_SMBIOS_CHASSIS_RAID_CHASSIS,
+	FWTS_SMBIOS_CHASSIS_RACK_MOUNT_CHASSIS,
+	FWTS_SMBIOS_CHASSIS_SEALED_CASE_PC,
+	FWTS_SMBIOS_CHASSIS_MULTI_SYSTEM_CHASSIS,
+	FWTS_SMBIOS_CHASSIS_COMPACT_PCI,
+	FWTS_SMBIOS_CHASSIS_ADVANCED_TCA,
+	FWTS_SMBIOS_CHASSIS_BLADE,
+	FWTS_SMBIOS_CHASSIS_BLADE_ENCLOSURE,
+	FWTS_SMBIOS_CHASSIS_TABLET,
+	FWTS_SMBIOS_CHASSIS_CONVERTIBLE,
+	FWTS_SMBIOS_CHASSIS_DETACHABLE,
+	FWTS_SMBIOS_CHASSIS_IOT_GATEWAY,
+	FWTS_SMBIOS_CHASSIS_EMBEDDED_PC,
+	FWTS_SMBIOS_CHASSIS_MINI_PC,
+	FWTS_SMBIOS_CHASSIS_STICK_PC,
+	/* end of the chassis types */
+	FWTS_SMBIOS_CHASSIS_MAX
+};
 
 typedef enum {
 	FWTS_SMBIOS_UNKNOWN = -1,
-- 
2.7.4




More information about the fwts-devel mailing list