IPMI BMC interface, addressing, and interrupt configuration.
lazybiosGetType38 returns a lazybiosType38Array_t holding every matching structure. Iterate entries using count. A non-NULL result whose count is zero means the table contains no structure of this type; NULL means the arguments were unusable or an allocation failed. Release the set with lazybiosFreeType38, or assign it to ctx->Type38 and let lazybiosCleanup own it.
Every record carries its own SMBIOS handle and the structure length the firmware reported.
Encoded fields are decoded during parsing into decoded, which mirrors the raw member names (base_address_type, register_spacing, interface_type, base_address). The raw value stays alongside it, so both the encoding and its meaning are available.
decoded.interface_type decodes the BMC interface type, and decoded.ipmi_specification_revision formats the packed BCD IPMI specification revision. An NV storage-device address of 0xFF indicates that no storage device is present; this encoded value is preserved as a raw value and reports LAZYBIOS_FIELD_ABSENT.
The least-significant bit of base_address selects I/O or memory-mapped addressing. decoded.base_address_type reports that selection and decoded.base_address removes the selection bit while restoring the actual address bit from the modifier byte. decoded.register_spacing decodes register spacing, while decoded.base_address_modifier_interrupt_info decodes interrupt availability, polarity, and trigger mode. The modifier and interrupt-number fields are marked absent when the formatted structure does not contain their offsets.
Release the returned array with lazybiosFreeType38, or assign it to lazybiosCTX::Type38 and use lazybiosCleanup.