dmi_bis_entry_point
Synopsis
#include <opendmi/entity/bis-entry-point.h>
typedef struct dmi_bis_entry_point {
uint8_t checksum;
dmi_bis_real_mode_addr_t entry_point_16;
uint32_t entry_point_32;
bool is_valid;
} dmi_bis_entry_point_t;
Description
The dmi_bis_entry_point_t structure holds the decoded Boot Integrity
Services (BIS) entry point structure (type 31) of SMBIOS: the addresses at
which the Boot Integrity Services can be called. SMBIOS reserves the
structure type for BIS, and the Boot Integrity Services API specification
defines its content.
The structure is returned by dmi_entity_info for the structures of type
DMI_TYPE(bis_entry_point), and lives as long as the context it has been
decoded in.
Fields
checksum-
Checksum of the structure, which makes the sum of all its bytes zero.
entry_point_16-
Entry point for the 16-bit real mode, see
dmi_bis_real_mode_addr. entry_point_32-
Entry point for the 32-bit protected mode, a physical address.
is_valid-
trueif the bytes of the structure sum to zero, that is, if the checksum is valid.
Examples
dmi_registry_t *registry = dmi_get_registry(context);
dmi_entity_t *entity = dmi_registry_lookup_first(
registry, DMI_TYPE(bis_entry_point), true);
dmi_bis_entry_point_t *bis = dmi_entity_info(entity,
DMI_TYPE(bis_entry_point));
if ((bis != nullptr) && bis->is_valid)
printf("BIS entry point: %04X:%04X\n",
(unsigned)bis->entry_point_16.segment,
(unsigned)bis->entry_point_16.offset);