[PATCH] lib: replace FWTS_ACPI_FADT_PREFERRED_PM_PROFILE with function
Colin King
colin.king at canonical.com
Thu Nov 26 11:03:30 UTC 2020
From: Colin Ian King <colin.king at canonical.com>
Replace the macro FWTS_ACPI_FADT_PREFERRED_PM_PROFILE with a function
that performs full range checking.
Signed-off-by: Colin Ian King <colin.king at canonical.com>
---
src/acpi/fadt/fadt.c | 2 +-
src/lib/include/fwts_acpi.h | 4 +---
src/lib/src/fwts_acpi.c | 30 +++++++++++++++++++-----------
src/sbbr/fadt/fadt.c | 2 +-
4 files changed, 22 insertions(+), 16 deletions(-)
diff --git a/src/acpi/fadt/fadt.c b/src/acpi/fadt/fadt.c
index ab5a3b2b..97905983 100644
--- a/src/acpi/fadt/fadt.c
+++ b/src/acpi/fadt/fadt.c
@@ -425,7 +425,7 @@ static void acpi_table_check_fadt_pm_profile(fwts_framework *fw)
{
fwts_log_info(fw, "FADT Preferred PM Profile: %hhu (%s)",
fadt->preferred_pm_profile,
- FWTS_ACPI_FADT_PREFERRED_PM_PROFILE(fadt->preferred_pm_profile));
+ fwts_acpi_fadt_preferred_pm_profile(fadt->preferred_pm_profile));
if (fadt->preferred_pm_profile <= 8)
fwts_passed(fw, "FADT has a valid preferred PM profile.");
diff --git a/src/lib/include/fwts_acpi.h b/src/lib/include/fwts_acpi.h
index efa988f2..e8332984 100644
--- a/src/lib/include/fwts_acpi.h
+++ b/src/lib/include/fwts_acpi.h
@@ -105,10 +105,8 @@
#include "fwts_framework.h"
#include "fwts_log.h"
-extern const char *fwts_acpi_fadt_preferred_pm_profile[];
+const char *fwts_acpi_fadt_preferred_pm_profile(const int profile);
-#define FWTS_ACPI_FADT_PREFERRED_PM_PROFILE(x) \
- ((x) > 8) ? "Reserved" : fwts_acpi_fadt_preferred_pm_profile[x]
#define FWTS_ACPI_FADT_FLAGS_HW_REDUCED_ACPI (1<<20)
/*
diff --git a/src/lib/src/fwts_acpi.c b/src/lib/src/fwts_acpi.c
index 55ac50bc..45347e0c 100644
--- a/src/lib/src/fwts_acpi.c
+++ b/src/lib/src/fwts_acpi.c
@@ -30,17 +30,25 @@
#if defined(FWTS_HAS_ACPI)
-const char *fwts_acpi_fadt_preferred_pm_profile[] = {
- "Unspecified",
- "Desktop",
- "Mobile",
- "Workstation",
- "Enterprise Server",
- "SOHO Server",
- "Appliance PC",
- "Performance Server",
- "Tablet",
-};
+const char *fwts_acpi_fadt_preferred_pm_profile(const int profile)
+{
+ static const char *pm_profiles[] = {
+ "Unspecified",
+ "Desktop",
+ "Mobile",
+ "Workstation",
+ "Enterprise Server",
+ "SOHO Server",
+ "Appliance PC",
+ "Performance Server",
+ "Tablet"
+ };
+
+ if ((profile < 0) || profile >= (int)(FWTS_ARRAY_SIZE(pm_profiles)))
+ return "Reserved";
+
+ return pm_profiles[profile];
+}
/*
* fwts_acpi_table_get_header()
diff --git a/src/sbbr/fadt/fadt.c b/src/sbbr/fadt/fadt.c
index 35ba5d15..82044b47 100644
--- a/src/sbbr/fadt/fadt.c
+++ b/src/sbbr/fadt/fadt.c
@@ -378,7 +378,7 @@ static int fadt_sbbr_profile_test3(fwts_framework *fw)
fwts_log_info(fw, "FADT Preferred PM Profile: %hhu (%s)",
fadt->preferred_pm_profile,
- FWTS_ACPI_FADT_PREFERRED_PM_PROFILE(fadt->preferred_pm_profile));
+ fwts_acpi_fadt_preferred_pm_profile(fadt->preferred_pm_profile));
if ((fadt->preferred_pm_profile == SBBR_ENT_SERVER) ||
(fadt->preferred_pm_profile == SBBR_SOHO_SERVER) ||
--
2.29.2
More information about the fwts-devel
mailing list