2 Module for clarifying the content of the smbios structure element info.
4 Copyright (c) 2005-2010, Intel Corporation. All rights reserved. <BR>
5 This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
15 #include "../UefiShellDebug1CommandsLib.h"
16 #include "PrintInfo.h"
17 #include "QueryTable.h"
18 #include "EventLogInfo.h"
21 Function to display system event log access information.
23 @param[in] Key Additional information to print.
24 @param[in] Option Whether to print the additional information.
28 DisplaySELAccessMethod (
36 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_ACCESS_METHOD
), gShellDebug1HiiHandle
);
37 PRINT_INFO_OPTION (Key
, Option
);
44 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_ONE_EIGHT_BIT
), gShellDebug1HiiHandle
);
48 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_TWO_EIGHT_BITS
), gShellDebug1HiiHandle
);
52 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_ONE_SIXTEEN_BIT
), gShellDebug1HiiHandle
);
56 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_MEM_MAPPED_PHYS
), gShellDebug1HiiHandle
);
60 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_AVAIL_VIA_GENERAL
), gShellDebug1HiiHandle
);
65 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_AVAIL_FOR_FUTURE_ASSIGN
), gShellDebug1HiiHandle
);
67 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_BIOS_VENDOR_OEM
), gShellDebug1HiiHandle
);
73 Function to display system event log status information.
75 @param[in] Key Additional information to print.
76 @param[in] Option Whether to print the additional information.
88 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_LOG_STATUS
), gShellDebug1HiiHandle
);
89 PRINT_INFO_OPTION (Key
, Option
);
94 if ((Key
& 0x01) != 0) {
95 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_LOG_AREA_VALID
), gShellDebug1HiiHandle
);
97 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_LOG_AREA_VALID
), gShellDebug1HiiHandle
);
100 if ((Key
& 0x02) != 0) {
101 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_LOG_AREA_FULL
), gShellDebug1HiiHandle
);
103 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_LOG_AREA_NOT_FULL
), gShellDebug1HiiHandle
);
106 if ((Key
& 0xFC) != 0) {
107 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_RES_BITS_NOT_ZERO
), gShellDebug1HiiHandle
, Key
& 0xFC);
112 Function to display system event log header format information.
114 @param[in] Key Additional information to print.
115 @param[in] Option Whether to print the additional information.
119 DisplaySysEventLogHeaderFormat (
127 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_LOG_HEADER_FORMAT
), gShellDebug1HiiHandle
);
128 PRINT_INFO_OPTION (Key
, Option
);
134 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_NO_HEADER
), gShellDebug1HiiHandle
);
135 } else if (Key
== 0x01) {
136 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_TYPE_LOG_HEADER
), gShellDebug1HiiHandle
);
137 } else if (Key
<= 0x7f) {
138 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_AVAIL_FOR_FUTURE
), gShellDebug1HiiHandle
);
140 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_BIOS_VENDOR
), gShellDebug1HiiHandle
);
145 DisplaySELLogHeaderLen (
150 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_LOG_HEADER_LEN
), gShellDebug1HiiHandle
);
151 PRINT_INFO_OPTION (Key
, Option
);
153 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_ONE_VAR_D
), gShellDebug1HiiHandle
, Key
& 0x7F);
156 // The most-significant bit of the field specifies
157 // whether (0) or not (1) the record has been read
159 if ((Key
& 0x80) != 0) {
160 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_THIS_RECORD_READ
), gShellDebug1HiiHandle
);
162 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_THIS_RECORD_NOT_READ
), gShellDebug1HiiHandle
);
167 DisplaySysEventLogHeaderType1 (
171 LOG_HEADER_TYPE1_FORMAT
*Header
;
173 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_SYSTEM_EVENT_LOG
), gShellDebug1HiiHandle
);
176 // Print Log Header Type1 Format info
178 Header
= (LOG_HEADER_TYPE1_FORMAT
*) (LogHeader
);
180 ShellPrintHiiEx(-1,-1,NULL
,
181 STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_OEM_RESERVED
),
182 gShellDebug1HiiHandle
,
183 Header
->OEMReserved
[0],
184 Header
->OEMReserved
[1],
185 Header
->OEMReserved
[2],
186 Header
->OEMReserved
[3],
187 Header
->OEMReserved
[4]
189 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_MULTIPLE_EVENT_TIME
), gShellDebug1HiiHandle
, Header
->METW
);
190 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_MULTIPLE_EVENT_COUNT
), gShellDebug1HiiHandle
, Header
->MECI
);
191 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_PREBOOT_ADDRESS
), gShellDebug1HiiHandle
, Header
->CMOSAddress
);
192 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_PREBOOT_INDEX
), gShellDebug1HiiHandle
, Header
->CMOSBitIndex
);
193 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_CHECKSUM_STARTING_OFF
), gShellDebug1HiiHandle
, Header
->StartingOffset
);
194 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_CHECKSUN_BYTE_COUNT
), gShellDebug1HiiHandle
, Header
->ChecksumOffset
);
195 ShellPrintHiiEx(-1,-1,NULL
,
196 STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_RESERVED
),
197 gShellDebug1HiiHandle
,
198 Header
->OEMReserved
[0],
199 Header
->OEMReserved
[1],
200 Header
->OEMReserved
[2]
202 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_HEADER_REVISION
), gShellDebug1HiiHandle
, Header
->HeaderRevision
);
206 Function to display system event log header information.
208 @param[in] LogHeaderFormat Format identifier.
209 @param[in] LogHeader Format informcation.
213 DisplaySysEventLogHeader (
214 UINT8 LogHeaderFormat
,
221 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_LOG_HEADER
), gShellDebug1HiiHandle
);
226 if (LogHeaderFormat
== 0x00) {
227 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_NO_HEADER
), gShellDebug1HiiHandle
);
228 } else if (LogHeaderFormat
== 0x01) {
229 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_TYPE_LOG_HEADER
), gShellDebug1HiiHandle
);
230 DisplaySysEventLogHeaderType1 (LogHeader
);
231 } else if (LogHeaderFormat
<= 0x7f) {
232 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_AVAIL_FUTURE_ASSIGN
), gShellDebug1HiiHandle
);
234 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_BIOS_VENDOR
), gShellDebug1HiiHandle
);
250 DisplaySELVarDataFormatType (ElVdfType
, SHOW_DETAIL
);
253 // Display Type description
257 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_NO_STD_FORMAT
), gShellDebug1HiiHandle
);
261 Word
= (UINT16
*) (VarData
+ 1);
262 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_SMBIOS_STRUCT_ASSOC
), gShellDebug1HiiHandle
);
263 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_STRUCT_HANDLE
), gShellDebug1HiiHandle
, *Word
);
267 Dword
= (UINT32
*) (VarData
+ 1);
268 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_MULT_EVENT_COUNTER
), gShellDebug1HiiHandle
, *Dword
);
272 Word
= (UINT16
*) (VarData
+ 1);
273 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_SMBIOS_STRUCT_ASSOC
), gShellDebug1HiiHandle
);
274 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_STRUCT_HANDLE
), gShellDebug1HiiHandle
, *Word
);
276 // Followed by a multiple-event counter
278 Dword
= (UINT32
*) (VarData
+ 1);
279 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_MULT_EVENT_COUNTER
), gShellDebug1HiiHandle
, *Dword
);
283 Dword
= (UINT32
*) (VarData
+ 1);
284 DisplayPostResultsBitmapDw1 (*Dword
, SHOW_DETAIL
);
286 DisplayPostResultsBitmapDw2 (*Dword
, SHOW_DETAIL
);
290 Dword
= (UINT32
*) (VarData
+ 1);
291 DisplaySELSysManagementTypes (*Dword
, SHOW_DETAIL
);
295 Dword
= (UINT32
*) (VarData
+ 1);
296 DisplaySELSysManagementTypes (*Dword
, SHOW_DETAIL
);
298 // Followed by a multiple-event counter
300 Dword
= (UINT32
*) (VarData
+ 1);
301 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_MULT_EVENT_COUNTER
), gShellDebug1HiiHandle
, *Dword
);
305 if (ElVdfType
<= 0x7F) {
306 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_UNUSED_AVAIL_FOR_ASSIGN
), gShellDebug1HiiHandle
);
308 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_AVAIL_FOR_SYSTEM
), gShellDebug1HiiHandle
);
314 Function to display system event log data.
316 @param[in] LogData The data information.
317 @param[in] LogAreaLength Length of the data.
321 DisplaySysEventLogData (
326 LOG_RECORD_FORMAT
*Log
;
329 // Event Log Variable Data Format Types
336 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_SYSTEM_EVENT_LOG_2
), gShellDebug1HiiHandle
);
342 Log
= (LOG_RECORD_FORMAT
*) LogData
;
343 while (Log
->Type
!= END_OF_LOG
&& Offset
< LogAreaLength
) {
345 // Get a Event Log Record
347 Log
= (LOG_RECORD_FORMAT
*) (LogData
+ Offset
);
350 // Display Event Log Record Information
352 DisplaySELVarDataFormatType (Log
->Type
, SHOW_DETAIL
);
353 DisplaySELLogHeaderLen (Log
->Length
, SHOW_DETAIL
);
355 Offset
+= Log
->Length
;
358 // Display Log Header Date/Time Fields
359 // These fields contain the BCD representation of the date and time
360 // (as read from CMOS) of the occurrence of the event
361 // So Print as hex and represent decimal
363 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_DATE
), gShellDebug1HiiHandle
);
364 if (Log
!= NULL
&& Log
->Year
>= 80 && Log
->Year
<= 99) {
366 } else if (Log
!= NULL
&& Log
->Year
<= 79) {
369 ShellPrintHiiEx(-1,-1,NULL
,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_ERROR
), gShellDebug1HiiHandle
);
373 ShellPrintHiiEx(-1,-1,NULL
,
374 STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_TIME_SIX_VARS
),
375 gShellDebug1HiiHandle
,
385 // Display Variable Data Format
387 if (Log
->Length
<= (sizeof (LOG_RECORD_FORMAT
) - 1)) {
391 ElVdfType
= Log
->LogVariableData
[0];
392 DisplayElVdfInfo (ElVdfType
, Log
->LogVariableData
);