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