|
|
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.