From: Jan Kiszka <
jan.k...@siemens.com>
We can do better, also by introducing a type for the probe function. No
functional change intended.
Signed-off-by: Jan Kiszka <
jan.k...@siemens.com>
---
.github/workflows/main.yaml | 2 --
main.c | 6 ++++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml
index 62065d7..2bdcb8c 100644
--- a/.github/workflows/main.yaml
+++ b/.github/workflows/main.yaml
@@ -134,8 +134,6 @@ jobs:
# Some functions are used by linker wrapping
suppress+=" --suppress=unusedFunction:tools/tests/test_probe_config_file.c"
suppress+=" --suppress=unusedFunction:tools/tests/test_ebgenv_api.c"
- # EFI uses void* as ImageBase needed for further calculations
- suppress+=" --suppress=arithOperationsOnVoidPointer:main.c"
# False positive on init_array iteration
suppress+=" --suppress=comparePointers:main.c"
# False positive on constructors, first hit
diff --git a/main.c b/main.c
index 826a16b..ccf77b4 100644
--- a/main.c
+++ b/main.c
@@ -30,6 +30,8 @@ extern CHAR16 *boot_medium_path;
#define PCI_GET_VENDOR_ID(id) (UINT16)(id)
#define PCI_GET_PRODUCT_ID(id) (UINT16)((id) >> 16)
+typedef EFI_STATUS (*WATCHDOG_PROBE)(EFI_PCI_IO *, UINT16, UINT16, UINTN);
+
static EFI_STATUS probe_watchdogs(EFI_LOADED_IMAGE *loaded_image, UINTN timeout)
{
if (init_array_end - init_array_start == 0) {
@@ -81,10 +83,10 @@ static EFI_STATUS probe_watchdogs(EFI_LOADED_IMAGE *loaded_image, UINTN timeout)
continue;
}
- EFI_STATUS (*probe)(EFI_PCI_IO *, UINT16, UINT16, UINTN);
for (const unsigned long *entry = init_array_start;
entry < init_array_end; entry++) {
- probe = loaded_image->ImageBase + *entry;
+ WATCHDOG_PROBE probe = (WATCHDOG_PROBE)
+ (UINT8 * ) loaded_image->ImageBase + *entry;
if ((status = probe(pci_io, PCI_GET_VENDOR_ID(value),
PCI_GET_PRODUCT_ID(value),
timeout)) == EFI_SUCCESS) {
--
2.34.1