diff mbox

[RFC,1/4] fwts: Add fwts_firmware_has_feature

Message ID 1398327504.317461.331884734022.1.gpush@pablo
State Rejected
Headers show

Commit Message

Jeremy Kerr April 24, 2014, 8:18 a.m. UTC
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(+)
diff mbox

Patch

diff --git a/src/lib/include/fwts_firmware.h b/src/lib/include/fwts_firmware.h
index 7688d5e..bc7c293 100644
--- a/src/lib/include/fwts_firmware.h
+++ b/src/lib/include/fwts_firmware.h
@@ -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
diff --git a/src/lib/src/fwts_firmware.c b/src/lib/src/fwts_firmware.c
index fcc2e80..3d09572 100644
--- a/src/lib/src/fwts_firmware.c
+++ b/src/lib/src/fwts_firmware.c
@@ -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;
+}