summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEduardo Habkost <ehabkost@redhat.com>2020-12-10 10:57:55 -0500
committerKevin O'Connor <kevin@koconnor.net>2021-12-18 11:39:12 -0500
commitcfd1ef3ab92da94bebee84947abe2b8cad1ae1bc (patch)
tree1dcae4f47586ead16c2691bef913bcd71e5a4a70
parent97f6c5b0246225c5b5341e13af6e5578ccedb190 (diff)
downloadqemu-seabios-cfd1ef3ab92da94bebee84947abe2b8cad1ae1bc.tar.gz
smbios: Generic smbios_next() function
Extract generic code from smbios_21_next(), so it can be reused for SMBIOS 3.0 support. Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
-rw-r--r--src/fw/biostables.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/fw/biostables.c b/src/fw/biostables.c
index 8e53ae2..3c30331 100644
--- a/src/fw/biostables.c
+++ b/src/fw/biostables.c
@@ -265,12 +265,11 @@ find_acpi_features(void)
// Iterator for each sub-table in the smbios blob.
void *
-smbios_21_next(struct smbios_21_entry_point *smbios, void *prev)
+smbios_next(void *start, u32 length, void *prev)
{
- if (!smbios)
+ if (!start)
return NULL;
- void *start = (void*)smbios->structure_table_address;
- void *end = start + smbios->structure_table_length;
+ void *end = start + length;
if (!prev) {
prev = start;
@@ -288,6 +287,15 @@ smbios_21_next(struct smbios_21_entry_point *smbios, void *prev)
return prev;
}
+void *
+smbios_21_next(struct smbios_21_entry_point *smbios, void *prev)
+{
+ if (!smbios)
+ return NULL;
+ return smbios_next((void*)smbios->structure_table_address,
+ smbios->structure_table_length, prev);
+}
+
struct smbios_21_entry_point *SMBios21Addr;
void