smbios: smbios_21_setup_entry_point() function

Extract the code specific for building the SMBIOS 2.1 entry point
from smbios_romfile_setup() to a new
smbios_21_setup_entry_point() function.

Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
This commit is contained in:
Eduardo Habkost 2020-12-10 13:52:14 -05:00 committed by Kevin O'Connor
parent 4e99229e32
commit 1daafc8ba8
1 changed files with 20 additions and 13 deletions

View File

@ -523,6 +523,25 @@ smbios_build_tables(struct romfile_s *f_tables,
return 1;
}
static int
smbios_21_setup_entry_point(struct romfile_s *f_tables,
struct smbios_21_entry_point *ep)
{
if (!smbios_build_tables(f_tables,
&ep->structure_table_address,
&ep->structure_table_length,
&ep->max_structure_size,
&ep->number_of_structures))
return 0;
/* finalize entry point */
ep->checksum -= checksum(ep, 0x10);
ep->intermediate_checksum -= checksum((void *)ep + 0x10, ep->length - 0x10);
copy_smbios_21(ep);
return 1;
}
static int
smbios_romfile_setup(void)
{
@ -535,19 +554,7 @@ smbios_romfile_setup(void)
f_anchor->copy(f_anchor, &ep, f_anchor->size);
if (!smbios_build_tables(f_tables,
&ep.structure_table_address,
&ep.structure_table_length,
&ep.max_structure_size,
&ep.number_of_structures))
return 0;
/* finalize entry point */
ep.checksum -= checksum(&ep, 0x10);
ep.intermediate_checksum -= checksum((void *)&ep + 0x10, ep.length - 0x10);
copy_smbios_21(&ep);
return 1;
return smbios_21_setup_entry_point(f_tables, &ep);
}
void