[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