#ifndef MELVIX_SMBIOS_H #define MELVIX_SMBIOS_H struct smbios_header { uint8_t type; uint8_t length; uint16_t handle; }; struct smbios_entry { int8_t signature[4]; uint8_t checksum; uint8_t length; uint8_t major_version; uint8_t minor_version; uint8_t max_structure_size; int8_t entry_point_revision; int8_t formatted_area[5]; int8_t entry_point_signature[5]; uint8_t checksum2; uint16_t table_length; uint32_t table_address; uint16_t number_of_structures; uint8_t bcd_revision; }; struct smbios_0 { char *vendor; char *bios_version; uint16_t bios_start; char *bios_release_data; uint8_t bios_size; uint64_t bios_characteristics; }; struct smbios_1 { char *manufacturer; char *product_name; char *version; char *serial_number; uint8_t uuid[16]; uint8_t wakeup_type; }; struct smbios_entry *get_smbios(); void smbios_table(struct smbios_header *header); #endif