]> git.proxmox.com Git - mirror_edk2.git/blame - ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/SmbiosView.c
SecurityPkg Variable: Reuse scratch data area(at the end of volatile variable store)
[mirror_edk2.git] / ShellPkg / Library / UefiShellDebug1CommandsLib / SmbiosView / SmbiosView.c
CommitLineData
5d73d92f 1/** @file\r
2 Tools of clarify the content of the smbios table.\r
3\r
c011b6c9 4 (C) Copyright 2015 Hewlett-Packard Development Company, L.P.<BR>\r
187cb3dd 5 Copyright (c) 2005 - 2012, Intel Corporation. All rights reserved.<BR>\r
5d73d92f 6 This program and the accompanying materials\r
7 are licensed and made available under the terms and conditions of the BSD License\r
8 which accompanies this distribution. The full text of the license may be found at\r
9 http://opensource.org/licenses/bsd-license.php\r
10\r
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
13\r
14**/\r
15\r
16#include "../UefiShellDebug1CommandsLib.h"\r
17#include "LibSmbiosView.h"\r
a1d4bfcc 18#include "SmbiosView.h"\r
5d73d92f 19#include "PrintInfo.h"\r
20#include "QueryTable.h"\r
21\r
22UINT8 gShowType = SHOW_DETAIL;\r
23STATIC STRUCTURE_STATISTICS *mStatisticsTable = NULL;\r
24\r
25UINT8 SmbiosMajorVersion;\r
26UINT8 SmbiosMinorVersion;\r
27\r
28STATIC CONST SHELL_PARAM_ITEM ParamList[] = {\r
29 {L"-t", TypeValue},\r
30 {L"-h", TypeValue},\r
31 {L"-s", TypeFlag},\r
32 {L"-a", TypeFlag},\r
33 {NULL, TypeMax}\r
34 };\r
35\r
a1d4bfcc 36/**\r
37 Function for 'smbiosview' command.\r
38\r
39 @param[in] ImageHandle Handle to the Image (NULL if Internal).\r
40 @param[in] SystemTable Pointer to the System Table (NULL if Internal).\r
41**/\r
5d73d92f 42SHELL_STATUS\r
43EFIAPI\r
44ShellCommandRunSmbiosView (\r
45 IN EFI_HANDLE ImageHandle,\r
46 IN EFI_SYSTEM_TABLE *SystemTable\r
47 )\r
48{\r
49 UINT8 StructType;\r
50 UINT16 StructHandle;\r
51 EFI_STATUS Status;\r
52 BOOLEAN RandomView;\r
53 LIST_ENTRY *Package;\r
54 CHAR16 *ProblemParam;\r
55 SHELL_STATUS ShellStatus;\r
56 CONST CHAR16 *Temp;\r
57\r
58 mStatisticsTable = NULL;\r
59 Package = NULL;\r
60 ShellStatus = SHELL_SUCCESS;\r
61\r
3737ac2b 62 Status = ShellCommandLineParse (ParamList, &Package, &ProblemParam, TRUE);\r
5d73d92f 63 if (EFI_ERROR(Status)) {\r
64 if (Status == EFI_VOLUME_CORRUPTED && ProblemParam != NULL) {\r
4092a8f6 65 ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellDebug1HiiHandle, L"smbiosview", ProblemParam); \r
5d73d92f 66 FreePool(ProblemParam);\r
67 ShellStatus = SHELL_INVALID_PARAMETER;\r
68 } else {\r
69 ASSERT(FALSE);\r
70 }\r
71 } else {\r
72 if (ShellCommandLineGetCount(Package) > 1) {\r
4092a8f6 73 ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellDebug1HiiHandle, L"smbiosview"); \r
5d73d92f 74 ShellStatus = SHELL_INVALID_PARAMETER;\r
980d554e 75 } else if (ShellCommandLineGetFlag(Package, L"-t") && ShellCommandLineGetValue(Package, L"-t") == NULL) {\r
4092a8f6 76 ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_VALUE), gShellDebug1HiiHandle, L"smbiosview", L"-t"); \r
980d554e 77 ShellStatus = SHELL_INVALID_PARAMETER;\r
78 } else if (ShellCommandLineGetFlag(Package, L"-h") && ShellCommandLineGetValue(Package, L"-h") == NULL) {\r
4092a8f6 79 ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_VALUE), gShellDebug1HiiHandle, L"smbiosview", L"-h"); \r
980d554e 80 ShellStatus = SHELL_INVALID_PARAMETER;\r
3737ac2b 81 } else if (\r
82 (ShellCommandLineGetFlag(Package, L"-t") && ShellCommandLineGetFlag(Package, L"-h")) ||\r
83 (ShellCommandLineGetFlag(Package, L"-t") && ShellCommandLineGetFlag(Package, L"-s")) ||\r
84 (ShellCommandLineGetFlag(Package, L"-t") && ShellCommandLineGetFlag(Package, L"-a")) ||\r
85 (ShellCommandLineGetFlag(Package, L"-h") && ShellCommandLineGetFlag(Package, L"-s")) ||\r
86 (ShellCommandLineGetFlag(Package, L"-h") && ShellCommandLineGetFlag(Package, L"-a")) ||\r
87 (ShellCommandLineGetFlag(Package, L"-s") && ShellCommandLineGetFlag(Package, L"-a"))\r
88 ) {\r
4092a8f6 89 ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellDebug1HiiHandle, L"smbiosview"); \r
3737ac2b 90 ShellStatus = SHELL_INVALID_PARAMETER;\r
5d73d92f 91 } else {\r
92\r
93 //\r
94 // Init Lib\r
3737ac2b 95 \r
5d73d92f 96 Status = LibSmbiosInit ();\r
97 if (EFI_ERROR (Status)) {\r
98 ShellStatus = SHELL_NOT_FOUND;\r
99 goto Done;\r
100 }\r
101 //\r
102 // build statistics table\r
103 //\r
104 Status = InitSmbiosTableStatistics ();\r
105 if (EFI_ERROR (Status)) {\r
106 ShellStatus = SHELL_NOT_FOUND;\r
107 goto Done;\r
108 }\r
109\r
110 StructType = STRUCTURE_TYPE_RANDOM;\r
111 RandomView = TRUE;\r
112 //\r
113 // Initialize the StructHandle to be the first handle\r
114 //\r
187cb3dd 115 StructHandle = INVALID_HANDLE;\r
5d73d92f 116 LibGetSmbiosStructure (&StructHandle, NULL, NULL);\r
117\r
118 Temp = ShellCommandLineGetValue(Package, L"-t");\r
119 if (Temp != NULL) {\r
120 StructType = (UINT8) ShellStrToUintn (Temp);\r
121 }\r
122\r
123 Temp = ShellCommandLineGetValue(Package, L"-h");\r
124 if (Temp != NULL) {\r
125 RandomView = FALSE;\r
126 StructHandle = (UINT16) ShellStrToUintn(Temp);\r
127 }\r
128\r
129 if (ShellCommandLineGetFlag(Package, L"-s")) {\r
130 Status = DisplayStatisticsTable (SHOW_DETAIL);\r
131 if (EFI_ERROR(Status)) {\r
132 ShellStatus = SHELL_NOT_FOUND;\r
133 }\r
134 goto Done;\r
135 }\r
136\r
137 if (ShellCommandLineGetFlag(Package, L"-a")) {\r
138 gShowType = SHOW_ALL;\r
139 }\r
140 //\r
141 // Show SMBIOS structure information\r
142 //\r
143 Status = SMBiosView (StructType, StructHandle, gShowType, RandomView);\r
144 if (EFI_ERROR(Status)) {\r
145 ShellStatus = SHELL_NOT_FOUND;\r
146 }\r
147 }\r
148 }\r
149Done:\r
150 //\r
151 // Release resources\r
152 //\r
153 if (mStatisticsTable != NULL) {\r
154 //\r
155 // Release statistics table\r
156 //\r
157 FreePool (mStatisticsTable);\r
158 mStatisticsTable = NULL;\r
159 }\r
160\r
161 if (Package != NULL) {\r
162 ShellCommandLineFreeVarList (Package);\r
163 }\r
164\r
165 LibSmbiosCleanup ();\r
166\r
167 return ShellStatus;\r
168}\r
169\r
170/**\r
171 Query all structures Data from SMBIOS table and Display\r
172 the information to users as required display option.\r
173\r
174 @param[in] QueryType Structure type to view.\r
175 @param[in] QueryHandle Structure handle to view.\r
176 @param[in] Option Display option: none,outline,normal,detail.\r
177 @param[in] RandomView Support for -h parameter.\r
178\r
179 @retval EFI_SUCCESS print is successful.\r
180 @retval EFI_BAD_BUFFER_SIZE structure is out of the range of SMBIOS table.\r
181**/\r
182EFI_STATUS\r
183EFIAPI\r
184SMBiosView (\r
185 IN UINT8 QueryType,\r
186 IN UINT16 QueryHandle,\r
187 IN UINT8 Option,\r
188 IN BOOLEAN RandomView\r
189 )\r
190{\r
191 UINT16 Handle;\r
187cb3dd 192 UINT8 *Buffer;\r
5d73d92f 193 UINT16 Length;\r
194 UINTN Index;\r
5d73d92f 195\r
a1d4bfcc 196 SMBIOS_STRUCTURE_POINTER SmbiosStruct;\r
187cb3dd 197 SMBIOS_TABLE_ENTRY_POINT *SMBiosTable;\r
5d73d92f 198\r
199 SMBiosTable = NULL;\r
200 LibSmbiosGetEPS (&SMBiosTable);\r
201 if (SMBiosTable == NULL) {\r
202 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_SMBIOSVIEW_CANNOT_ACCESS_TABLE), gShellDebug1HiiHandle);\r
203 return EFI_BAD_BUFFER_SIZE;\r
204 }\r
205\r
206 if (CompareMem (SMBiosTable->AnchorString, "_SM_", 4) == 0) {\r
207 //\r
187cb3dd 208 // Have got SMBIOS table\r
5d73d92f 209 //\r
210 SmbiosPrintEPSInfo (SMBiosTable, Option);\r
211\r
212 SmbiosMajorVersion = SMBiosTable->MajorVersion;\r
213 SmbiosMinorVersion = SMBiosTable->MinorVersion;\r
214\r
215 ShellPrintEx(-1,-1,L"=========================================================\n");\r
216 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_SMBIOSVIEW_QUERY_STRUCT_COND), gShellDebug1HiiHandle);\r
217\r
218 if (QueryType == STRUCTURE_TYPE_RANDOM) {\r
219 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_SMBIOSVIEW_QUERYTYPE_RANDOM), gShellDebug1HiiHandle);\r
220 } else {\r
221 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_SMBIOSVIEW_QUERYTYPE), gShellDebug1HiiHandle, QueryType);\r
222 }\r
223\r
224 if (RandomView) {\r
225 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_SMBIOSVIEW_QUERYHANDLE_RANDOM), gShellDebug1HiiHandle);\r
226 } else {\r
227 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_SMBIOSVIEW_QUERYHANDLE), gShellDebug1HiiHandle, QueryHandle);\r
228 }\r
229\r
230 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_SMBIOSVIEW_SHOWTYPE), gShellDebug1HiiHandle);\r
231 ShellPrintEx(-1,-1,GetShowTypeString (gShowType));\r
232 ShellPrintEx(-1,-1,L"\n\n");\r
233\r
234/*\r
235 //\r
236 // Get internal commands, such as change options.\r
237 //\r
238 Status = WaitEnter ();\r
239 if (EFI_ERROR (Status)) {\r
240 if (Status == EFI_ABORTED) {\r
241 return EFI_SUCCESS;\r
242 }\r
243\r
244 return Status;\r
245 }\r
246*/\r
247\r
248 //\r
249 // Searching and display structure info\r
250 //\r
251 Handle = QueryHandle;\r
5d73d92f 252 for (Index = 0; Index < SMBiosTable->NumberOfSmbiosStructures; Index++) {\r
253 //\r
254 // if reach the end of table, break..\r
255 //\r
187cb3dd 256 if (Handle == INVALID_HANDLE) {\r
5d73d92f 257 break;\r
258 }\r
259 //\r
260 // handle then point to the next!\r
261 //\r
187cb3dd 262 if (LibGetSmbiosStructure (&Handle, &Buffer, &Length) != DMI_SUCCESS) {\r
5d73d92f 263 break;\r
264 }\r
187cb3dd 265\r
a1d4bfcc 266 SmbiosStruct.Raw = Buffer;\r
5d73d92f 267\r
268 //\r
269 // if QueryType==Random, print this structure.\r
270 // if QueryType!=Random, but Hdr->Type==QueryType, also print it.\r
271 // only if QueryType != Random and Hdr->Type != QueryType, skiped it.\r
272 //\r
a1d4bfcc 273 if (QueryType != STRUCTURE_TYPE_RANDOM && SmbiosStruct.Hdr->Type != QueryType) {\r
5d73d92f 274 continue;\r
275 }\r
276\r
277 ShellPrintEx(-1,-1,L"\n=========================================================\n");\r
278 ShellPrintHiiEx(-1,-1,NULL,\r
279 STRING_TOKEN (STR_SMBIOSVIEW_SMBIOSVIEW_TYPE_HANDLE_DUMP_STRUCT),\r
280 gShellDebug1HiiHandle,\r
a1d4bfcc 281 SmbiosStruct.Hdr->Type,\r
282 SmbiosStruct.Hdr->Handle\r
5d73d92f 283 );\r
284 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_SMBIOSVIEW_INDEX_LENGTH), gShellDebug1HiiHandle, Index, Length);\r
285 //\r
286 // Addr of structure in structure in table\r
287 //\r
187cb3dd 288 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_SMBIOSVIEW_ADDR), gShellDebug1HiiHandle, (UINTN) Buffer);\r
5d73d92f 289 DumpHex (0, 0, Length, Buffer);\r
290\r
291/*\r
292 //\r
293 // Get internal commands, such as change options.\r
294 //\r
295 Status = WaitEnter ();\r
296 if (EFI_ERROR (Status)) {\r
297 if (Status == EFI_ABORTED) {\r
298 return EFI_SUCCESS;\r
299 }\r
300\r
301 return Status;\r
302 }\r
303*/\r
304\r
305 if (gShowType != SHOW_NONE) {\r
5d73d92f 306 //\r
307 // Print structure information\r
308 //\r
a1d4bfcc 309 SmbiosPrintStructure (&SmbiosStruct, gShowType);\r
5d73d92f 310 ShellPrintEx(-1,-1,L"\n");\r
311\r
312/*\r
313 //\r
314 // Get internal commands, such as change options.\r
315 //\r
316 Status = WaitEnter ();\r
317 if (EFI_ERROR (Status)) {\r
318 if (Status == EFI_ABORTED) {\r
319 return EFI_SUCCESS;\r
320 }\r
321\r
322 return Status;\r
323 }\r
324*/\r
325 }\r
326 if (!RandomView) {\r
327 break;\r
328 }\r
7ac133d0 329 //\r
330 // Support Execution Interrupt.\r
331 //\r
332 if (ShellGetExecutionBreakFlag ()) {\r
333 return EFI_ABORTED;\r
334 }\r
5d73d92f 335 }\r
336\r
337 ShellPrintEx(-1,-1,L"\n=========================================================\n");\r
338 return EFI_SUCCESS;\r
339 }\r
340\r
341 return EFI_BAD_BUFFER_SIZE;\r
342}\r
343\r
344/**\r
345 Function to initialize the global mStatisticsTable object.\r
346\r
347 @retval EFI_SUCCESS print is successful.\r
348**/\r
349EFI_STATUS\r
350EFIAPI\r
351InitSmbiosTableStatistics (\r
352 VOID\r
353 )\r
354{\r
355 UINT16 Handle;\r
187cb3dd 356 UINT8 *Buffer;\r
5d73d92f 357 UINT16 Length;\r
358 UINT16 Offset;\r
359 UINT16 Index;\r
360\r
a1d4bfcc 361 SMBIOS_STRUCTURE_POINTER SmbiosStruct;\r
187cb3dd 362 SMBIOS_TABLE_ENTRY_POINT *SMBiosTable;\r
a1d4bfcc 363 STRUCTURE_STATISTICS *StatisticsPointer;\r
5d73d92f 364\r
365 SMBiosTable = NULL;\r
366 LibSmbiosGetEPS (&SMBiosTable);\r
367 if (SMBiosTable == NULL) {\r
368 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_SMBIOSVIEW_CANNOT_ACCESS_TABLE), gShellDebug1HiiHandle);\r
369 return EFI_NOT_FOUND;\r
370 }\r
371\r
372 if (CompareMem (SMBiosTable->AnchorString, "_SM_", 4) != 0) {\r
373 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_SMBIOSVIEW_SMBIOS_TABLE), gShellDebug1HiiHandle);\r
374 return EFI_INVALID_PARAMETER;\r
375 }\r
376 //\r
377 // Allocate memory to mStatisticsTable\r
378 //\r
379 if (mStatisticsTable != NULL) {\r
380 FreePool (mStatisticsTable);\r
381 mStatisticsTable = NULL;\r
382 }\r
383\r
3737ac2b 384 mStatisticsTable = (STRUCTURE_STATISTICS *) AllocateZeroPool (SMBiosTable->NumberOfSmbiosStructures * sizeof (STRUCTURE_STATISTICS));\r
5d73d92f 385\r
386 if (mStatisticsTable == NULL) {\r
387 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_SMBIOSVIEW_OUT_OF_MEM), gShellDebug1HiiHandle);\r
388 return EFI_OUT_OF_RESOURCES;\r
389 }\r
390\r
391 Offset = 0;\r
a1d4bfcc 392 StatisticsPointer = mStatisticsTable;\r
5d73d92f 393\r
394 //\r
395 // search from the first one\r
396 //\r
187cb3dd 397 Handle = INVALID_HANDLE;\r
5d73d92f 398 LibGetSmbiosStructure (&Handle, NULL, NULL);\r
399 for (Index = 1; Index <= SMBiosTable->NumberOfSmbiosStructures; Index++) {\r
400 //\r
401 // If reach the end of table, break..\r
402 //\r
187cb3dd 403 if (Handle == INVALID_HANDLE) {\r
5d73d92f 404 break;\r
405 }\r
406 //\r
407 // After LibGetSmbiosStructure(), handle then point to the next!\r
408 //\r
187cb3dd 409 if (LibGetSmbiosStructure (&Handle, &Buffer, &Length) != DMI_SUCCESS) {\r
5d73d92f 410 break;\r
411 }\r
412\r
a1d4bfcc 413 SmbiosStruct.Raw = Buffer;\r
5d73d92f 414\r
415 //\r
416 // general statistics\r
417 //\r
a1d4bfcc 418 StatisticsPointer->Index = Index;\r
419 StatisticsPointer->Type = SmbiosStruct.Hdr->Type;\r
420 StatisticsPointer->Handle = SmbiosStruct.Hdr->Handle;\r
421 StatisticsPointer->Length = Length;\r
422 StatisticsPointer->Addr = Offset;\r
5d73d92f 423\r
187cb3dd
SZ
424 Offset = (UINT16) (Offset + Length);\r
425\r
a1d4bfcc 426 StatisticsPointer = &mStatisticsTable[Index];\r
5d73d92f 427 }\r
428\r
429 return EFI_SUCCESS;\r
430}\r
431\r
432/**\r
433 Function to display the global mStatisticsTable object.\r
434\r
435 @param[in] Option ECHO, NORMAL, or DETAIL control the amount of detail displayed.\r
436\r
437 @retval EFI_SUCCESS print is successful.\r
438**/\r
439EFI_STATUS\r
440EFIAPI\r
441DisplayStatisticsTable (\r
442 IN UINT8 Option\r
443 )\r
444{\r
187cb3dd
SZ
445 UINTN Index;\r
446 UINTN Num;\r
447 STRUCTURE_STATISTICS *StatisticsPointer;\r
448 SMBIOS_TABLE_ENTRY_POINT *SMBiosTable;\r
5d73d92f 449\r
450 SMBiosTable = NULL;\r
451 if (Option < SHOW_OUTLINE) {\r
452 return EFI_SUCCESS;\r
453 }\r
454 //\r
455 // display EPS information firstly\r
456 //\r
457 LibSmbiosGetEPS (&SMBiosTable);\r
458 if (SMBiosTable == NULL) {\r
459 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_SMBIOSVIEW_CANNOT_ACCESS_TABLE), gShellDebug1HiiHandle);\r
460 return EFI_UNSUPPORTED;\r
461 }\r
462\r
463 ShellPrintEx(-1,-1,L"\n============================================================\n");\r
464 SmbiosPrintEPSInfo (SMBiosTable, Option);\r
465\r
466 if (Option < SHOW_NORMAL) {\r
467 return EFI_SUCCESS;\r
468 }\r
469\r
470 if (mStatisticsTable == NULL) {\r
471 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_SMBIOSVIEW_CANNOT_ACCESS_STATS), gShellDebug1HiiHandle);\r
472 return EFI_NOT_FOUND;\r
473 }\r
474\r
475 ShellPrintEx(-1,-1,L"============================================================\n");\r
a1d4bfcc 476 StatisticsPointer = &mStatisticsTable[0];\r
5d73d92f 477 Num = SMBiosTable->NumberOfSmbiosStructures;\r
478 //\r
479 // display statistics table content\r
480 //\r
481 for (Index = 1; Index <= Num; Index++) {\r
a1d4bfcc 482 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_SMBIOSVIEW_INDEX), gShellDebug1HiiHandle, StatisticsPointer->Index);\r
483 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_SMBIOSVIEW_TYPE), gShellDebug1HiiHandle, StatisticsPointer->Type);\r
484 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_SMBIOSVIEW_HANDLE), gShellDebug1HiiHandle, StatisticsPointer->Handle);\r
5d73d92f 485 if (Option >= SHOW_DETAIL) {\r
a1d4bfcc 486 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_SMBIOSVIEW_OFFSET), gShellDebug1HiiHandle, StatisticsPointer->Addr);\r
487 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_SMBIOSVIEW_LENGTH), gShellDebug1HiiHandle, StatisticsPointer->Length);\r
5d73d92f 488 }\r
489\r
490 ShellPrintEx(-1,-1,L"\n");\r
a1d4bfcc 491 StatisticsPointer = &mStatisticsTable[Index];\r
5d73d92f 492/*\r
493 //\r
494 // Display 20 lines and wait for a page break\r
495 //\r
496 if (Index % 20 == 0) {\r
497 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_SMBIOSVIEW_ENTER_CONTINUE), gShellDebug1HiiHandle);\r
498 Status = WaitEnter ();\r
499 if (EFI_ERROR (Status)) {\r
500 if (Status == EFI_ABORTED) {\r
501 return EFI_SUCCESS;\r
502 }\r
503\r
504 return Status;\r
505 }\r
506 }\r
507*/\r
508 }\r
509\r
510 return EFI_SUCCESS;\r
511}\r
512\r
513/**\r
514 function to return a string of the detail level.\r
515\r
516 @param[in] ShowType The detail level whose name is desired in clear text.\r
517\r
518 @return A pointer to a string representing the ShowType (or 'undefined type' if not known).\r
519**/\r
520CHAR16 *\r
521EFIAPI\r
522GetShowTypeString (\r
523 UINT8 ShowType\r
524 )\r
525{\r
526 //\r
527 // show type\r
528 //\r
529 switch (ShowType) {\r
530\r
531 case SHOW_NONE:\r
532 return L"SHOW_NONE";\r
533\r
534 case SHOW_OUTLINE:\r
535 return L"SHOW_OUTLINE";\r
536\r
537 case SHOW_NORMAL:\r
538 return L"SHOW_NORMAL";\r
539\r
540 case SHOW_DETAIL:\r
541 return L"SHOW_DETAIL";\r
542\r
543 case SHOW_ALL:\r
544 return L"SHOW_ALL";\r
545\r
546 default:\r
547 return L"Undefined type";\r
548 }\r
549}\r
550\r