@@ -19,6 +19,8 @@
#ifndef __FWTS_FIRMWARE_H__
#define __FWTS_FIRMWARE_H__
+#include <stdbool.h>
+
enum {
FWTS_FIRMWARE_UNKNOWN = 0,
FWTS_FIRMWARE_BIOS = 1,
@@ -26,6 +28,11 @@ enum {
FWTS_FIRMWARE_OTHER = 100,
};
+enum firmware_feature {
+ FWTS_FW_FEATURE_ACPI = 1 << 0,
+};
+
int fwts_firmware_detect(void);
+bool fwts_firmware_has_feature(enum firmware_feature);
#endif
@@ -36,3 +36,23 @@ int fwts_firmware_detect(void)
else
return FWTS_FIRMWARE_UEFI;
}
+
+/*
+ * returns true if the running firmware has feature @feature
+ */
+bool fwts_firmware_has_feature(enum firmware_feature feature)
+{
+ int features = 0;
+
+ /* we just have static feature definitions for now */
+ switch (fwts_firmware_detect()) {
+ case FWTS_FIRMWARE_BIOS:
+ case FWTS_FIRMWARE_UEFI:
+ features = FWTS_FW_FEATURE_ACPI;
+ break;
+ default:
+ break;
+ }
+
+ return features & feature;
+}
Add a function to indicate whether a firmware has a particular feature. This can be used by tests to skip non-relevant tests. Signed-off-by: Jeremy Kerr <jk@ozlabs.org> --- src/lib/include/fwts_firmware.h | 7 +++++++ src/lib/src/fwts_firmware.c | 20 ++++++++++++++++++++ 2 files changed, 27 insertions(+)