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

true if 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);

Standards

DMTF SMBIOS Specification (DSP0134), version 2.3 or newer.