source: bootcd/isolinux/syslinux-6.03/com32/modules/dmitest.c @ dd1be7c

Last change on this file since dd1be7c was e16e8f2, checked in by Edwin Eefting <edwin@datux.nl>, 3 years ago

bootstuff

  • Property mode set to 100644
File size: 9.4 KB
Line 
1/* ----------------------------------------------------------------------- *
2 *
3 *   Copyright 2006 Erwan Velu - All Rights Reserved
4 *
5 *   Permission is hereby granted, free of charge, to any person
6 *   obtaining a copy of this software and associated documentation
7 *   files (the "Software"), to deal in the Software without
8 *   restriction, including without limitation the rights to use,
9 *   copy, modify, merge, publish, distribute, sublicense, and/or
10 *   sell copies of the Software, and to permit persons to whom
11 *   the Software is furnished to do so, subject to the following
12 *   conditions:
13 *
14 *   The above copyright notice and this permission notice shall
15 *   be included in all copies or substantial portions of the Software.
16 *
17 *   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18 *   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
19 *   OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
20 *   NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
21 *   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
22 *   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
23 *   FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
24 *   OTHER DEALINGS IN THE SOFTWARE.
25 *
26 * -----------------------------------------------------------------------
27*/
28
29/*
30 * dmitest.c
31 *
32 * DMI demo program using libcom32
33 */
34
35#include <string.h>
36#include <stdio.h>
37#include <console.h>
38#include "dmi/dmi.h"
39
40char display_line;
41
42void display_memory(s_dmi * dmi)
43{
44    int i;
45    for (i = 0; i < dmi->memory_count; i++) {
46        moreprintf("Memory Bank %d\n", i);
47        moreprintf("\tForm Factor  : %s\n", dmi->memory[i].form_factor);
48        moreprintf("\tType         : %s\n", dmi->memory[i].type);
49        moreprintf("\tType Detail  : %s\n", dmi->memory[i].type_detail);
50        moreprintf("\tSpeed        : %s\n", dmi->memory[i].speed);
51        moreprintf("\tSize         : %s\n", dmi->memory[i].size);
52        moreprintf("\tDevice Set   : %s\n", dmi->memory[i].device_set);
53        moreprintf("\tDevice Loc.  : %s\n", dmi->memory[i].device_locator);
54        moreprintf("\tBank Locator : %s\n", dmi->memory[i].bank_locator);
55        moreprintf("\tTotal Width  : %s\n", dmi->memory[i].total_width);
56        moreprintf("\tData Width   : %s\n", dmi->memory[i].data_width);
57        moreprintf("\tError        : %s\n", dmi->memory[i].error);
58        moreprintf("\tVendor       : %s\n", dmi->memory[i].manufacturer);
59        moreprintf("\tSerial       : %s\n", dmi->memory[i].serial);
60        moreprintf("\tAsset Tag    : %s\n", dmi->memory[i].asset_tag);
61        moreprintf("\tPart Number  : %s\n", dmi->memory[i].part_number);
62    }
63}
64
65void display_battery(s_dmi * dmi)
66{
67    moreprintf("Battery\n");
68    moreprintf("\tVendor              : %s\n", dmi->battery.manufacturer);
69    moreprintf("\tManufacture Date    : %s\n", dmi->battery.manufacture_date);
70    moreprintf("\tSerial              : %s\n", dmi->battery.serial);
71    moreprintf("\tName                : %s\n", dmi->battery.name);
72    moreprintf("\tChemistry           : %s\n", dmi->battery.chemistry);
73    moreprintf("\tDesign Capacity     : %s\n", dmi->battery.design_capacity);
74    moreprintf("\tDesign Voltage      : %s\n", dmi->battery.design_voltage);
75    moreprintf("\tSBDS                : %s\n", dmi->battery.sbds);
76    moreprintf("\tSBDS Manufact. Date : %s\n",
77               dmi->battery.sbds_manufacture_date);
78    moreprintf("\tSBDS Chemistry      : %s\n", dmi->battery.sbds_chemistry);
79    moreprintf("\tMaximum Error       : %s\n", dmi->battery.maximum_error);
80    moreprintf("\tOEM Info            : %s\n", dmi->battery.oem_info);
81}
82
83void display_bios(s_dmi * dmi)
84{
85    moreprintf("BIOS\n");
86    moreprintf("\tVendor:   %s\n", dmi->bios.vendor);
87    moreprintf("\tVersion:  %s\n", dmi->bios.version);
88    moreprintf("\tRelease:  %s\n", dmi->bios.release_date);
89    moreprintf("\tBios Revision     %s\n", dmi->bios.bios_revision);
90    moreprintf("\tFirmware Revision %s\n", dmi->bios.firmware_revision);
91    moreprintf("\tAddress:  0x%04X0\n", dmi->bios.address);
92    moreprintf("\tRuntime address: %u %s\n", dmi->bios.runtime_size,
93               dmi->bios.runtime_size_unit);
94    moreprintf("\tRom size: %u %s\n", dmi->bios.rom_size,
95               dmi->bios.rom_size_unit);
96    display_bios_characteristics(dmi);
97}
98
99void display_system(s_dmi * dmi)
100{
101    moreprintf("\nSystem\n");
102    moreprintf("\tManufacturer %s\n", dmi->system.manufacturer);
103    moreprintf("\tProduct Name %s\n", dmi->system.product_name);
104    moreprintf("\tVersion      %s\n", dmi->system.version);
105    moreprintf("\tSerial       %s\n", dmi->system.serial);
106    moreprintf("\tUUID         %s\n", dmi->system.uuid);
107    moreprintf("\tWakeup Type  %s\n", dmi->system.wakeup_type);
108    moreprintf("\tSKU Number   %s\n", dmi->system.sku_number);
109    moreprintf("\tFamily       %s\n", dmi->system.family);
110}
111
112void display_base_board(s_dmi * dmi)
113{
114    moreprintf("Base board\n");
115    moreprintf("\tManufacturer %s\n", dmi->base_board.manufacturer);
116    moreprintf("\tProduct Name %s\n", dmi->base_board.product_name);
117    moreprintf("\tVersion      %s\n", dmi->base_board.version);
118    moreprintf("\tSerial       %s\n", dmi->base_board.serial);
119    moreprintf("\tAsset Tag    %s\n", dmi->base_board.asset_tag);
120    moreprintf("\tLocation     %s\n", dmi->base_board.location);
121    moreprintf("\tType         %s\n", dmi->base_board.type);
122    display_base_board_features(dmi);
123}
124
125void display_chassis(s_dmi * dmi)
126{
127    moreprintf("\nChassis\n");
128    moreprintf("\tManufacturer %s\n", dmi->chassis.manufacturer);
129    moreprintf("\tType     %s\n", dmi->chassis.type);
130    moreprintf("\tLock     %s\n", dmi->chassis.lock);
131    moreprintf("\tVersion      %s\n", dmi->chassis.version);
132    moreprintf("\tSerial       %s\n", dmi->chassis.serial);
133    moreprintf("\tAsset Tag    %s\n", dmi->chassis.asset_tag);
134    moreprintf("\tBoot up state %s\n", dmi->chassis.boot_up_state);
135    moreprintf("\tPower supply state %s\n", dmi->chassis.power_supply_state);
136    moreprintf("\tThermal state %s\n", dmi->chassis.thermal_state);
137    moreprintf("\tSecurity Status    %s\n", dmi->chassis.security_status);
138    moreprintf("\tOEM Information    %s\n", dmi->chassis.oem_information);
139    moreprintf("\tHeight       %u\n", dmi->chassis.height);
140    moreprintf("\tNB Power Cords     %u\n", dmi->chassis.nb_power_cords);
141}
142
143void display_cpu(s_dmi * dmi)
144{
145    moreprintf("\nCPU\n");
146    moreprintf("\tSocket Designation %s\n", dmi->processor.socket_designation);
147    moreprintf("\tType         %s\n", dmi->processor.type);
148    moreprintf("\tFamily       %s\n", dmi->processor.family);
149    moreprintf("\tManufacturer %s\n", dmi->processor.manufacturer);
150    moreprintf("\tVersion      %s\n", dmi->processor.version);
151    moreprintf("\tExternal Clock    %u\n", dmi->processor.external_clock);
152    moreprintf("\tMax Speed         %u\n", dmi->processor.max_speed);
153    moreprintf("\tCurrent Speed     %u\n", dmi->processor.current_speed);
154    moreprintf("\tCpu Type     %u\n", dmi->processor.signature.type);
155    moreprintf("\tCpu Family   %u\n", dmi->processor.signature.family);
156    moreprintf("\tCpu Model    %u\n", dmi->processor.signature.model);
157    moreprintf("\tCpu Stepping %u\n", dmi->processor.signature.stepping);
158    moreprintf("\tCpu Minor Stepping %u\n",
159               dmi->processor.signature.minor_stepping);
160    moreprintf("\tVoltage      %d mV\n", dmi->processor.voltage_mv);
161    moreprintf("\tStatus       %s\n", dmi->processor.status);
162    moreprintf("\tUpgrade      %s\n", dmi->processor.upgrade);
163    moreprintf("\tCache L1 Handle %s\n", dmi->processor.cache1);
164    moreprintf("\tCache L2 Handle %s\n", dmi->processor.cache2);
165    moreprintf("\tCache L3 Handle %s\n", dmi->processor.cache3);
166    moreprintf("\tSerial       %s\n", dmi->processor.serial);
167    moreprintf("\tPart Number  %s\n", dmi->processor.part_number);
168    if (dmi->processor.core_count != 0)
169        moreprintf("\tCores Count   %d\n", dmi->processor.core_count);
170    if (dmi->processor.core_enabled != 0)
171        moreprintf("\tCores Enabled %d\n", dmi->processor.core_enabled);
172    if (dmi->processor.thread_count != 0)
173        moreprintf("\tThreads Count %d\n", dmi->processor.thread_count);
174    moreprintf("\tID           %s\n", dmi->processor.id);
175    display_processor_flags(dmi);
176}
177
178int main(void)
179{
180    char buffer[1024];
181    s_dmi dmi;
182
183    if (dmi_iterate(&dmi) == -ENODMITABLE) {
184        printf("No DMI Structure found\n");
185        return -1;
186    } else {
187        printf("DMI %u.%u present.\n", dmi.dmitable.major_version,
188               dmi.dmitable.minor_version);
189        printf("%d structures occupying %d bytes.\n", dmi.dmitable.num,
190               dmi.dmitable.len);
191        printf("DMI table at 0x%08X.\n", dmi.dmitable.base);
192    }
193
194    parse_dmitable(&dmi);
195
196    for (;;) {
197        printf
198            ("Available commands are system, chassis, base_board, cpu, bios, memory, battery, all, exit\n");
199        printf("dmi: ");
200        fgets(buffer, sizeof buffer, stdin);
201        if (!strncmp(buffer, "exit", 4))
202            break;
203        if (!strncmp(buffer, "system", 6))
204            display_system(&dmi);
205        if (!strncmp(buffer, "chassis", 6))
206            display_chassis(&dmi);
207        if (!strncmp(buffer, "base_board", 10))
208            display_base_board(&dmi);
209        if (!strncmp(buffer, "cpu", 3))
210            display_cpu(&dmi);
211        if (!strncmp(buffer, "bios", 4))
212            display_bios(&dmi);
213        if (!strncmp(buffer, "memory", 6))
214            display_memory(&dmi);
215        if (!strncmp(buffer, "battery", 7))
216            display_battery(&dmi);
217        if (!strncmp(buffer, "all", 3)) {
218            display_bios(&dmi);
219            display_system(&dmi);
220            display_chassis(&dmi);
221            display_base_board(&dmi);
222            display_cpu(&dmi);
223            display_memory(&dmi);
224            display_battery(&dmi);
225        }
226    }
227
228    return 0;
229}
Note: See TracBrowser for help on using the repository browser.