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