|
|
1.1 ! root 1: #ifndef __SMBIOS_H ! 2: #define __SMBIOS_H ! 3: ! 4: // smbios.c ! 5: void smbios_init(void); ! 6: ! 7: /* SMBIOS entry point -- must be written to a 16-bit aligned address ! 8: between 0xf0000 and 0xfffff. ! 9: */ ! 10: struct smbios_entry_point { ! 11: char anchor_string[4]; ! 12: u8 checksum; ! 13: u8 length; ! 14: u8 smbios_major_version; ! 15: u8 smbios_minor_version; ! 16: u16 max_structure_size; ! 17: u8 entry_point_revision; ! 18: u8 formatted_area[5]; ! 19: char intermediate_anchor_string[5]; ! 20: u8 intermediate_checksum; ! 21: u16 structure_table_length; ! 22: u32 structure_table_address; ! 23: u16 number_of_structures; ! 24: u8 smbios_bcd_revision; ! 25: } PACKED; ! 26: ! 27: /* This goes at the beginning of every SMBIOS structure. */ ! 28: struct smbios_structure_header { ! 29: u8 type; ! 30: u8 length; ! 31: u16 handle; ! 32: } PACKED; ! 33: ! 34: /* SMBIOS type 0 - BIOS Information */ ! 35: struct smbios_type_0 { ! 36: struct smbios_structure_header header; ! 37: u8 vendor_str; ! 38: u8 bios_version_str; ! 39: u16 bios_starting_address_segment; ! 40: u8 bios_release_date_str; ! 41: u8 bios_rom_size; ! 42: u8 bios_characteristics[8]; ! 43: u8 bios_characteristics_extension_bytes[2]; ! 44: u8 system_bios_major_release; ! 45: u8 system_bios_minor_release; ! 46: u8 embedded_controller_major_release; ! 47: u8 embedded_controller_minor_release; ! 48: } PACKED; ! 49: ! 50: /* SMBIOS type 1 - System Information */ ! 51: struct smbios_type_1 { ! 52: struct smbios_structure_header header; ! 53: u8 manufacturer_str; ! 54: u8 product_name_str; ! 55: u8 version_str; ! 56: u8 serial_number_str; ! 57: u8 uuid[16]; ! 58: u8 wake_up_type; ! 59: u8 sku_number_str; ! 60: u8 family_str; ! 61: } PACKED; ! 62: ! 63: /* SMBIOS type 3 - System Enclosure (v2.3) */ ! 64: struct smbios_type_3 { ! 65: struct smbios_structure_header header; ! 66: u8 manufacturer_str; ! 67: u8 type; ! 68: u8 version_str; ! 69: u8 serial_number_str; ! 70: u8 asset_tag_number_str; ! 71: u8 boot_up_state; ! 72: u8 power_supply_state; ! 73: u8 thermal_state; ! 74: u8 security_status; ! 75: u32 oem_defined; ! 76: u8 height; ! 77: u8 number_of_power_cords; ! 78: u8 contained_element_count; ! 79: // contained elements follow ! 80: } PACKED; ! 81: ! 82: /* SMBIOS type 4 - Processor Information (v2.0) */ ! 83: struct smbios_type_4 { ! 84: struct smbios_structure_header header; ! 85: u8 socket_designation_str; ! 86: u8 processor_type; ! 87: u8 processor_family; ! 88: u8 processor_manufacturer_str; ! 89: u32 processor_id[2]; ! 90: u8 processor_version_str; ! 91: u8 voltage; ! 92: u16 external_clock; ! 93: u16 max_speed; ! 94: u16 current_speed; ! 95: u8 status; ! 96: u8 processor_upgrade; ! 97: u16 l1_cache_handle; ! 98: u16 l2_cache_handle; ! 99: u16 l3_cache_handle; ! 100: } PACKED; ! 101: ! 102: /* SMBIOS type 16 - Physical Memory Array ! 103: * Associated with one type 17 (Memory Device). ! 104: */ ! 105: struct smbios_type_16 { ! 106: struct smbios_structure_header header; ! 107: u8 location; ! 108: u8 use; ! 109: u8 error_correction; ! 110: u32 maximum_capacity; ! 111: u16 memory_error_information_handle; ! 112: u16 number_of_memory_devices; ! 113: } PACKED; ! 114: ! 115: /* SMBIOS type 17 - Memory Device ! 116: * Associated with one type 19 ! 117: */ ! 118: struct smbios_type_17 { ! 119: struct smbios_structure_header header; ! 120: u16 physical_memory_array_handle; ! 121: u16 memory_error_information_handle; ! 122: u16 total_width; ! 123: u16 data_width; ! 124: u16 size; ! 125: u8 form_factor; ! 126: u8 device_set; ! 127: u8 device_locator_str; ! 128: u8 bank_locator_str; ! 129: u8 memory_type; ! 130: u16 type_detail; ! 131: } PACKED; ! 132: ! 133: /* SMBIOS type 19 - Memory Array Mapped Address */ ! 134: struct smbios_type_19 { ! 135: struct smbios_structure_header header; ! 136: u32 starting_address; ! 137: u32 ending_address; ! 138: u16 memory_array_handle; ! 139: u8 partition_width; ! 140: } PACKED; ! 141: ! 142: /* SMBIOS type 20 - Memory Device Mapped Address */ ! 143: struct smbios_type_20 { ! 144: struct smbios_structure_header header; ! 145: u32 starting_address; ! 146: u32 ending_address; ! 147: u16 memory_device_handle; ! 148: u16 memory_array_mapped_address_handle; ! 149: u8 partition_row_position; ! 150: u8 interleave_position; ! 151: u8 interleaved_data_depth; ! 152: } PACKED; ! 153: ! 154: /* SMBIOS type 32 - System Boot Information */ ! 155: struct smbios_type_32 { ! 156: struct smbios_structure_header header; ! 157: u8 reserved[6]; ! 158: u8 boot_status; ! 159: } PACKED; ! 160: ! 161: /* SMBIOS type 127 -- End-of-table */ ! 162: struct smbios_type_127 { ! 163: struct smbios_structure_header header; ! 164: } PACKED; ! 165: ! 166: #endif // smbios.h
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.